diff --git a/src/SMESH_I/SMESH_Gen_i.cxx b/src/SMESH_I/SMESH_Gen_i.cxx index 870ce464e..701de05a8 100644 --- a/src/SMESH_I/SMESH_Gen_i.cxx +++ b/src/SMESH_I/SMESH_Gen_i.cxx @@ -402,6 +402,7 @@ SMESH_Gen_i::~SMESH_Gen_i() if ( myShapeReader ) delete myShapeReader; } + //============================================================================= /*! * SMESH_Gen_i::getHypothesisCreator @@ -409,6 +410,7 @@ SMESH_Gen_i::~SMESH_Gen_i() * Get hypothesis creator */ //============================================================================= + GenericHypothesisCreator_i* SMESH_Gen_i::getHypothesisCreator(const char* theHypName, const char* theLibName, std::string& thePlatformLibName) @@ -527,6 +529,7 @@ GenericHypothesisCreator_i* SMESH_Gen_i::getHypothesisCreator(const char* theHyp * Create hypothesis of given type */ //============================================================================= + SMESH::SMESH_Hypothesis_ptr SMESH_Gen_i::createHypothesis(const char* theHypName, const char* theLibName) { @@ -560,6 +563,7 @@ SMESH::SMESH_Hypothesis_ptr SMESH_Gen_i::createHypothesis(const char* theHypName * Create empty mesh on shape */ //============================================================================= + SMESH::SMESH_Mesh_ptr SMESH_Gen_i::createMesh() throw ( SALOME::SALOME_Exception ) { @@ -594,6 +598,7 @@ SMESH::SMESH_Mesh_ptr SMESH_Gen_i::createMesh() * Get shape reader */ //============================================================================= + GEOM_Client* SMESH_Gen_i::GetShapeReader() { // create shape reader if necessary @@ -610,13 +615,10 @@ GEOM_Client* SMESH_Gen_i::GetShapeReader() * Set GEOM::GEOM_Gen reference */ //============================================================================= -//GEOM::GEOM_Gen_ptr SMESH_Gen_i::SetGeomEngine( const char* containerLoc ) + void SMESH_Gen_i::SetGeomEngine( GEOM::GEOM_Gen_ptr geomcompo ) { - //Engines::Component_ptr temp=GetLCC()->FindOrLoad_Component(containerLoc,"GEOM"); - //myGeomGen=GEOM::GEOM_Gen::_narrow(temp); - myGeomGen=GEOM::GEOM_Gen::_duplicate(geomcompo); - //return myGeomGen; + myGeomGen = GEOM::GEOM_Gen::_duplicate( geomcompo ); } //============================================================================= @@ -671,6 +673,7 @@ CORBA::Boolean SMESH_Gen_i::IsEmbeddedMode() * Set enable publishing in the study */ //============================================================================= + void SMESH_Gen_i::SetEnablePublish( CORBA::Boolean theIsEnablePublish ) { myIsEnablePublish = theIsEnablePublish; @@ -795,6 +798,7 @@ char* SMESH_Gen_i::getObjectInfo( const char* entry ) * Get study context */ //============================================================================= + StudyContext* SMESH_Gen_i::GetStudyContext() { return myStudyContext; @@ -1070,7 +1074,7 @@ CORBA::Boolean SMESH_Gen_i::GetSoleSubMeshUsingHyp( SMESH::SMESH_Hypothesis_ptr //============================================================================= /*! - * Sets number of segments per diagonal of boundary box of geometry by which + * Set number of segments per diagonal of boundary box of geometry by which * default segment length of appropriate 1D hypotheses is defined */ //============================================================================= @@ -1083,11 +1087,13 @@ void SMESH_Gen_i::SetBoundaryBoxSegmentation( CORBA::Long theNbSegments ) else THROW_SALOME_CORBA_EXCEPTION( "non-positive number of segments", SALOME::BAD_PARAM ); } + //============================================================================= - /*! - * \brief Sets default number of segments per edge - */ +/*! + * \brief Set default number of segments per edge + */ //============================================================================= + void SMESH_Gen_i::SetDefaultNbSegments(CORBA::Long theNbSegments) throw ( SALOME::SALOME_Exception ) { @@ -1099,8 +1105,8 @@ void SMESH_Gen_i::SetDefaultNbSegments(CORBA::Long theNbSegments) //============================================================================= /*! - Set an option value -*/ + * Set an option value + */ //============================================================================= void SMESH_Gen_i::SetOption(const char* name, const char* value) @@ -1162,8 +1168,8 @@ void SMESH_Gen_i::SetOption(const char* name, const char* value) //============================================================================= /*! - Return an option value -*/ + * Return an option value + */ //============================================================================= char* SMESH_Gen_i::GetOption(const char* name) @@ -1256,7 +1262,7 @@ namespace { //================================================================================ /*! - * \brief Throws an exception in case if the file can't be read + * \brief Throw an exception in case if the file can't be read */ //================================================================================ @@ -1407,14 +1413,21 @@ SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromMEDorSAUV( const char* theFileNa return aResult._retn(); } -SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromMED( const char* theFileName, +//================================================================================ +/*! + * \brief Create meshes by reading a MED file + */ +//================================================================================ + +SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromMED( const char* theFileName, SMESH::DriverMED_ReadStatus& theStatus) throw ( SALOME::SALOME_Exception ) { Unexpect aCatch(SALOME_SalomeException); checkFileReadable( theFileName ); - SMESH::mesh_array* result = CreateMeshesFromMEDorSAUV(theFileName, theStatus, "CreateMeshesFromMED", theFileName); + SMESH::mesh_array* result = CreateMeshesFromMEDorSAUV(theFileName, theStatus, + "CreateMeshesFromMED", theFileName); return result; } @@ -1426,7 +1439,7 @@ SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromMED( const char* theFileName, */ //============================================================================= -SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromSAUV( const char* theFileName, +SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromSAUV( const char* theFileName, SMESH::DriverMED_ReadStatus& theStatus) throw ( SALOME::SALOME_Exception ) { @@ -1446,7 +1459,10 @@ SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromSAUV( const char* theFileName, cmd += "from medutilities import convert ; convert(r'" + sauvfilename + "', 'GIBI', 'MED', 1, r'" + medfilename + "')"; cmd += "\""; system(cmd.c_str()); - SMESH::mesh_array* result = CreateMeshesFromMEDorSAUV(medfilename.c_str(), theStatus, "CreateMeshesFromSAUV", sauvfilename.c_str()); + SMESH::mesh_array* result = CreateMeshesFromMEDorSAUV(medfilename.c_str(), + theStatus, + "CreateMeshesFromSAUV", + sauvfilename.c_str()); #ifdef WIN32 cmd = "%PYTHONBIN% "; #else @@ -1507,7 +1523,7 @@ SMESH::SMESH_Mesh_ptr SMESH_Gen_i::CreateMeshesFromSTL( const char* theFileName */ //================================================================================ -SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromCGNS( const char* theFileName, +SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromCGNS( const char* theFileName, SMESH::DriverMED_ReadStatus& theStatus) throw ( SALOME::SALOME_Exception ) { @@ -1635,7 +1651,7 @@ SMESH_Gen_i::CreateMeshesFromGMF( const char* theFileName, /*! * SMESH_Gen_i::IsReadyToCompute * - * Returns true if mesh contains enough data to be computed + * Return true if mesh contains enough data to be computed */ //============================================================================= @@ -1649,11 +1665,9 @@ CORBA::Boolean SMESH_Gen_i::IsReadyToCompute( SMESH::SMESH_Mesh_ptr theMesh, if ( CORBA::is_nil( theShapeObject ) ) THROW_SALOME_CORBA_EXCEPTION( "bad shape object reference", SALOME::BAD_PARAM ); - if ( CORBA::is_nil( theMesh ) ) THROW_SALOME_CORBA_EXCEPTION( "bad Mesh reference", SALOME::BAD_PARAM ); - try { // get mesh servant SMESH_Mesh_i* meshServant = dynamic_cast( GetServant( theMesh ).in() ); @@ -1681,7 +1695,7 @@ CORBA::Boolean SMESH_Gen_i::IsReadyToCompute( SMESH::SMESH_Mesh_ptr theMesh, SALOMEDS::SObject_ptr SMESH_Gen_i::GetAlgoSO(const ::SMESH_Algo* algo) { if ( algo ) { - SALOMEDS::Study_var aStudy = getStudyServant(); + SALOMEDS::Study_var aStudy = getStudyServant(); if ( !aStudy->_is_nil() ) { // find algo in the study CORBA::String_var compDataType = ComponentDataType(); @@ -1908,9 +1922,9 @@ SMESH_Gen_i::MakeGroupsOfBadInputElements( SMESH::SMESH_Mesh_ptr theMesh, //================================================================================ /*! * \brief Returns errors of hypotheses definition - * \param theMesh - the mesh - * \param theSubObject - the main or sub- shape - * \retval SMESH::algo_error_array* - sequence of errors + * \param theMesh - the mesh + * \param theSubObject - the main or sub- shape + * \retval SMESH::algo_error_array* - sequence of errors */ //================================================================================ @@ -2343,12 +2357,10 @@ SMESH::long_array* SMESH_Gen_i::Evaluate(SMESH::SMESH_Mesh_ptr theMesh, if(MYDEBUG) MESSAGE( "SMESH_Gen_i::Evaluate" ); if ( CORBA::is_nil( theShapeObject ) && theMesh->HasShapeToMesh()) - THROW_SALOME_CORBA_EXCEPTION( "bad shape object reference", - SALOME::BAD_PARAM ); + THROW_SALOME_CORBA_EXCEPTION( "bad shape object reference", SALOME::BAD_PARAM ); if ( CORBA::is_nil( theMesh ) ) - THROW_SALOME_CORBA_EXCEPTION( "bad Mesh reference", - SALOME::BAD_PARAM ); + THROW_SALOME_CORBA_EXCEPTION( "bad Mesh reference", SALOME::BAD_PARAM ); SMESH::long_array_var nbels = new SMESH::long_array; nbels->length(SMESH::Entity_Last); @@ -4097,6 +4109,7 @@ char* SMESH_Gen_i::GetMEDFileVersion() * Get MED version of the file by its name */ //================================================================================ + char* SMESH_Gen_i::GetMEDVersion(const char* theFileName) { std::string version = MED::GetMEDVersion( theFileName ); @@ -4110,6 +4123,7 @@ char* SMESH_Gen_i::GetMEDVersion(const char* theFileName) * Check compatibility of file with MED format being used, read only. */ //================================================================================ + CORBA::Boolean SMESH_Gen_i::CheckCompatibility(const char* theFileName) { return MED::CheckCompatibility( theFileName ); @@ -4122,6 +4136,7 @@ CORBA::Boolean SMESH_Gen_i::CheckCompatibility(const char* theFileName) * Check compatibility of file with MED format being used, for append on write. */ //================================================================================ + CORBA::Boolean SMESH_Gen_i::CheckWriteCompatibility(const char* theFileName) { return MED::CheckCompatibility( theFileName, true ); @@ -4135,13 +4150,12 @@ CORBA::Boolean SMESH_Gen_i::CheckWriteCompatibility(const char* theFileName) */ //================================================================================ SMESH::string_array* SMESH_Gen_i::GetMeshNames(const char* theFileName) + { - //MESSAGE("GetMeshNames " << theFileName); SMESH::string_array_var aResult = new SMESH::string_array(); MED::PWrapper aMed = MED::CrWrapperR( theFileName ); MED::TErr anErr; MED::TInt aNbMeshes = aMed->GetNbMeshes( &anErr ); - //MESSAGE("---" << aNbMeshes); if( anErr >= 0 ) { aResult->length( aNbMeshes ); for( MED::TInt i = 0; i < aNbMeshes; i++ ) { @@ -4159,6 +4173,7 @@ SMESH::string_array* SMESH_Gen_i::GetMeshNames(const char* theFileName) * Save SMESH module's data */ //============================================================================= + SALOMEDS::TMPFile* SMESH_Gen_i::Save( SALOMEDS::SComponent_ptr theComponent, const char* theURL, bool isMultiFile ) @@ -4301,8 +4316,6 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save( SALOMEDS::SComponent_ptr theComponent, #else // PAL17753 (Regression: missing hypothesis in restored study) // "lib" also should be removed from the beginning - //if( libname_len > 3 ) - //libname.resize( libname_len - 3 ); if( libname_len > 6 ) libname = libname.substr( 3, libname_len - 3 - 3 ); #endif @@ -4371,8 +4384,6 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save( SALOMEDS::SComponent_ptr theComponent, #else // PAL17753 (Regression: missing hypothesis in restored study) // "lib" also should be removed from the beginning - //if( libname_len > 3 ) - //libname.resize( libname_len - 3 ); if( libname_len > 6 ) libname = libname.substr( 3, libname_len - 3 - 3 ); #endif @@ -4776,10 +4787,6 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save( SALOMEDS::SComponent_ptr theComponent, aGroup->CloseOnDisk(); } } - // All sub-meshes will be stored in MED file - // .. will NOT (PAL 12992) - //if ( shapeRefFound ) - //myWriter.AddAllSubMeshes(); // store submesh order if any const TListOfListOfInt& theOrderIds = myLocMesh.GetMeshOrder(); @@ -5214,9 +5221,6 @@ bool SMESH_Gen_i::Load( SALOMEDS::SComponent_ptr theComponent, TPythonDump pd; // prevent dump during loading - // DriverMED_R_SMESHDS_Mesh myReader; - // myReader.SetFile( meshfile.ToCString() ); - // For PAL13473 ("Repetitive mesh") implementation. // New dependencies between SMESH objects are established: // now hypotheses can refer to meshes, shapes and other hypotheses. @@ -5562,8 +5566,6 @@ bool SMESH_Gen_i::Load( SALOMEDS::SComponent_ptr theComponent, { aTopGroup = meshi_group->second; SMESH_Mesh_i* myNewMeshImpl = meshi_group->first; - //::SMESH_Mesh& myLocMesh = myNewMeshImpl->GetImpl(); - //SMESHDS_Mesh* mySMESHDSMesh = myLocMesh.GetMeshDS(); GEOM::GEOM_Object_var aShapeObject = myNewMeshImpl->GetShapeToMesh(); bool hasData = false; @@ -5608,8 +5610,6 @@ bool SMESH_Gen_i::Load( SALOMEDS::SComponent_ptr theComponent, aDataset->ReadFromDisk( refFromFile ); aDataset->CloseOnDisk(); // san - it is impossible to recover applied algorithms using their entries within Load() method - //SALOMEDS::SObject_wrap hypSO = aStudy->FindObjectID( refFromFile ); - //CORBA::Object_var hypObject = SObjectToObject( hypSO ); int id = atoi( refFromFile ); delete [] refFromFile; string anIOR = myStudyContext->getIORbyOldId( id ); @@ -5645,8 +5645,6 @@ bool SMESH_Gen_i::Load( SALOMEDS::SComponent_ptr theComponent, aDataset->ReadFromDisk( refFromFile ); aDataset->CloseOnDisk(); // san - it is impossible to recover applied hypotheses using their entries within Load() method - //SALOMEDS::SObject_wrap hypSO = myStudy->FindObjectID( refFromFile ); - //CORBA::Object_var hypObject = SObjectToObject( hypSO ); int id = atoi( refFromFile ); delete [] refFromFile; string anIOR = myStudyContext->getIORbyOldId( id ); @@ -6229,6 +6227,7 @@ CORBA::Long SMESH_Gen_i::GetObjectId(CORBA::Object_ptr theObject) * Set a new object name */ //============================================================================= + void SMESH_Gen_i::SetName(const char* theIOR, const char* theName) { @@ -6256,6 +6255,7 @@ char* SMESH_Gen_i::getVersion() // purpose : Moves objects to the specified position. // Is used in the drag-n-drop functionality. //================================================================================= + void SMESH_Gen_i::Move( const SMESH::sobject_list& what, SALOMEDS::SObject_ptr where, CORBA::Long row ) @@ -6331,10 +6331,12 @@ CORBA::Boolean SMESH_Gen_i::IsApplicable ( const char* theAlgoType, return true; } -//================================================================================= -// function : GetInsideSphere -// purpose : Collect indices of elements, which are located inside the sphere -//================================================================================= +//================================================================================ +/*! + * \brief Collect indices of elements, which are located inside the sphere + */ +//================================================================================ + SMESH::long_array* SMESH_Gen_i::GetInsideSphere( SMESH::SMESH_IDSource_ptr meshPart, SMESH::ElementType theElemType, CORBA::Double theX, @@ -6361,6 +6363,12 @@ SMESH::long_array* SMESH_Gen_i::GetInsideSphere( SMESH::SMESH_IDSource_ptr meshP return aResult._retn(); } +//================================================================================ +/*! + * \brief Collect indices of elements, which are located inside the box + */ +//================================================================================ + SMESH::long_array* SMESH_Gen_i::GetInsideBox( SMESH::SMESH_IDSource_ptr meshPart, SMESH::ElementType theElemType, CORBA::Double theX1, @@ -6368,12 +6376,14 @@ SMESH::long_array* SMESH_Gen_i::GetInsideBox( SMESH::SMESH_IDSource_ptr meshPart CORBA::Double theZ1, CORBA::Double theX2, CORBA::Double theY2, - CORBA::Double theZ2) { + CORBA::Double theZ2) +{ SMESH::long_array_var aResult = new SMESH::long_array(); if( meshPart->_is_nil() ) return aResult._retn(); - TopoDS_Shape aShape = BRepPrimAPI_MakeBox( gp_Pnt( theX1, theY1, theZ1 ), gp_Pnt( theX2, theY2, theZ2 ) ).Shape(); + TopoDS_Shape aShape = BRepPrimAPI_MakeBox( gp_Pnt( theX1, theY1, theZ1 ), + gp_Pnt( theX2, theY2, theZ2 ) ).Shape(); std::vector lst =_GetInside(meshPart, theElemType, aShape); @@ -6386,6 +6396,12 @@ SMESH::long_array* SMESH_Gen_i::GetInsideBox( SMESH::SMESH_IDSource_ptr meshPart return aResult._retn(); } +//================================================================================ +/*! + * \brief Collect indices of elements, which are located inside the cylinder + */ +//================================================================================ + SMESH::long_array* SMESH_Gen_i::GetInsideCylinder( SMESH::SMESH_IDSource_ptr meshPart, SMESH::ElementType theElemType, CORBA::Double theX, @@ -6395,7 +6411,8 @@ SMESH::long_array* SMESH_Gen_i::GetInsideCylinder( SMESH::SMESH_IDSource_ptr mes CORBA::Double theDY, CORBA::Double theDZ, CORBA::Double theH, - CORBA::Double theR ){ + CORBA::Double theR ) +{ SMESH::long_array_var aResult = new SMESH::long_array(); if( meshPart->_is_nil() ) return aResult._retn(); @@ -6417,10 +6434,17 @@ SMESH::long_array* SMESH_Gen_i::GetInsideCylinder( SMESH::SMESH_IDSource_ptr mes return aResult._retn(); } +//================================================================================ +/*! + * \brief Collect indices of elements, which are located inside the geom object + */ +//================================================================================ + SMESH::long_array* SMESH_Gen_i::GetInside( SMESH::SMESH_IDSource_ptr meshPart, SMESH::ElementType theElemType, GEOM::GEOM_Object_ptr theGeom, - CORBA::Double theTolerance ) { + CORBA::Double theTolerance ) +{ SMESH::long_array_var aResult = new SMESH::long_array(); if( meshPart->_is_nil() || theGeom->_is_nil() ) return aResult._retn(); @@ -6438,12 +6462,16 @@ SMESH::long_array* SMESH_Gen_i::GetInside( SMESH::SMESH_IDSource_ptr meshPart, return aResult._retn(); } - +//================================================================================ +/*! + * \brief Collect indices of elements, which are located inside the TopoDS_Shape + */ +//================================================================================ std::vector SMESH_Gen_i::_GetInside( SMESH::SMESH_IDSource_ptr meshPart, - SMESH::ElementType theElemType, - TopoDS_Shape& aShape, - double* theTolerance) { + SMESH::ElementType theElemType, + const TopoDS_Shape& theShape, + double* theTolerance) { std::vector res; SMESH::SMESH_Mesh_var mesh = meshPart->GetMesh(); @@ -6464,7 +6492,7 @@ std::vector SMESH_Gen_i::_GetInside( SMESH::SMESH_IDSource_ptr meshPart, SMESH::Controls::ElementsOnShape* anElementsOnShape = new SMESH::Controls::ElementsOnShape(); anElementsOnShape->SetAllNodes( true ); anElementsOnShape->SetMesh( meshDS ); - anElementsOnShape->SetShape( aShape, aType ); + anElementsOnShape->SetShape( theShape, aType ); if(theTolerance) anElementsOnShape->SetTolerance(*theTolerance); @@ -6518,7 +6546,6 @@ std::vector SMESH_Gen_i::_GetInside( SMESH::SMESH_IDSource_ptr meshPart, return res; } - //============================================================================= /*! * SMESHEngine_factory diff --git a/src/SMESH_I/SMESH_Gen_i.hxx b/src/SMESH_I/SMESH_Gen_i.hxx index f85b0b045..895f745fc 100644 --- a/src/SMESH_I/SMESH_Gen_i.hxx +++ b/src/SMESH_I/SMESH_Gen_i.hxx @@ -659,9 +659,9 @@ private: const char* theFileNameForPython); std::vector _GetInside(SMESH::SMESH_IDSource_ptr meshPart, - SMESH::ElementType theElemType, - TopoDS_Shape& aShape, - double* theTolerance = NULL); + SMESH::ElementType ElemType, + const TopoDS_Shape& Shape, + double* Tolerance = NULL); private: static GEOM::GEOM_Gen_var myGeomGen; diff --git a/src/SMESH_I/SMESH_Mesh_i.cxx b/src/SMESH_I/SMESH_Mesh_i.cxx index e21d35e17..93cdb1ea9 100644 --- a/src/SMESH_I/SMESH_Mesh_i.cxx +++ b/src/SMESH_I/SMESH_Mesh_i.cxx @@ -176,7 +176,7 @@ SMESH_Mesh_i::~SMESH_Mesh_i() /*! * SetShape * - * Associates mesh with and puts a reference + * Associate mesh with and put a reference * to into the current study; * the previous shape is substituted by the new one. */ @@ -201,7 +201,7 @@ void SMESH_Mesh_i::SetShape( GEOM::GEOM_Object_ptr theShapeObject ) //================================================================================ /*! - * \brief return true if mesh has a shape to build a shape on + * \brief Return true if mesh has a shape to build a shape on */ //================================================================================ @@ -219,10 +219,11 @@ CORBA::Boolean SMESH_Mesh_i::HasShapeToMesh() return res; } -//======================================================================= -//function : GetShapeToMesh -//purpose : -//======================================================================= +//================================================================================ +/*! + * \brief Return the shape to mesh + */ +//================================================================================ GEOM::GEOM_Object_ptr SMESH_Mesh_i::GetShapeToMesh() throw (SALOME::SALOME_Exception) @@ -256,149 +257,6 @@ GEOM::GEOM_Object_ptr SMESH_Mesh_i::GetShapeToMesh() return aShapeObj._retn(); } -//================================================================================ -/*! -* \brief Replace a shape in the mesh -*/ -//================================================================================ - -void SMESH_Mesh_i::ReplaceShape(GEOM::GEOM_Object_ptr theNewGeom) - throw (SALOME::SALOME_Exception) -{ - // check if geometry changed - bool geomChanged = true; - GEOM::GEOM_Object_var oldGeom = GetShapeToMesh(); - if ( !theNewGeom->_is_nil() && !oldGeom->_is_nil() ) - geomChanged = ( //oldGeom->_is_equivalent( theNewGeom ) || - oldGeom->GetTick() < theNewGeom->GetTick() ); - - TopoDS_Shape S = _impl->GetShapeToMesh(); - GEOM_Client* geomClient = _gen_i->GetShapeReader(); - TCollection_AsciiString aIOR; - CORBA::String_var ior; - if ( geomClient->Find( S, aIOR )) - geomClient->RemoveShapeFromBuffer( aIOR ); - - // clear buffer also for sub-groups - const std::set& groups = _impl->GetMeshDS()->GetGroups(); - std::set::const_iterator g = groups.begin(); - for (; g != groups.end(); ++g) - if (const SMESHDS_GroupOnGeom* group = dynamic_cast(*g)) - { - const TopoDS_Shape& s = group->GetShape(); - if ( geomClient->Find( s, aIOR )) - geomClient->RemoveShapeFromBuffer( aIOR ); - } - - typedef struct { - int shapeID, fromID, toID; // indices of elements of a sub-mesh - } TRange; - std::vector< TRange > elemRanges, nodeRanges; // elements of sub-meshes - std::vector< SMDS_PositionPtr > positions; // node positions - SMESHDS_Mesh* meshDS = _impl->GetMeshDS(); - if ( !geomChanged ) - { - // store positions of elements on geometry - Load(); - if ( meshDS->MaxNodeID() > meshDS->NbNodes() || - meshDS->MaxElementID() > meshDS->NbElements() ) - { - meshDS->Modified(); - meshDS->CompactMesh(); - } - positions.resize( meshDS->NbNodes() + 1 ); - for ( SMDS_NodeIteratorPtr nodeIt = meshDS->nodesIterator(); nodeIt->more(); ) - { - const SMDS_MeshNode* n = nodeIt->next(); - positions[ n->GetID() ] = n->GetPosition(); - } - - // remove elements from sub-meshes to avoid their removal at hypotheses addition - for ( int isNode = 0; isNode < 2; ++isNode ) - { - std::vector< TRange > & ranges = isNode ? nodeRanges : elemRanges; - ranges.reserve( meshDS->MaxShapeIndex() + 10 ); - ranges.push_back( TRange{ 0,0,0 }); - SMDS_ElemIteratorPtr elemIt = meshDS->elementsIterator( isNode ? SMDSAbs_Node : SMDSAbs_All ); - while ( elemIt->more() ) - { - const SMDS_MeshElement* e = elemIt->next(); - const int elemID = e->GetID(); - const int shapeID = e->GetShapeID(); - TRange & lastRange = ranges.back(); - if ( lastRange.shapeID != shapeID || - lastRange.toID != elemID ) - ranges.push_back( TRange{ shapeID, elemID, elemID + 1 }); - else - lastRange.toID = elemID + 1; - - if ( SMESHDS_SubMesh* sm = meshDS->MeshElements( shapeID )) - { - if ( isNode ) sm->RemoveNode( static_cast< const SMDS_MeshNode *>( e )); - else sm->RemoveElement( e ); - } - } - } - } - - - // update the reference to theNewGeom (needed for correct execution of a dumped python script) - SMESH::SMESH_Mesh_var me = _this(); - SALOMEDS::SObject_wrap aSO = _gen_i->ObjectToSObject( me ); - CORBA::String_var entry = theNewGeom->GetStudyEntry(); - if ( !aSO->_is_nil() ) - { - SALOMEDS::SObject_wrap aShapeRefSO; - if ( aSO->FindSubObject( _gen_i->GetRefOnShapeTag(), aShapeRefSO.inout() )) - { - SALOMEDS::SObject_wrap aShapeSO = _gen_i->getStudyServant()->FindObjectID( entry ); - SALOMEDS::StudyBuilder_var builder = _gen_i->getStudyServant()->NewBuilder(); - builder->Addreference( aShapeRefSO, aShapeSO ); - } - } - - // re-assign global hypotheses to the new shape - _mainShapeTick = geomChanged ? -1 : theNewGeom->GetTick(); - CheckGeomModif( true ); - - if ( !geomChanged ) - { - // restore positions of elements on geometry - for ( int isNode = 0; isNode < 2; ++isNode ) - { - std::vector< TRange > & ranges = isNode ? nodeRanges : elemRanges; - for ( size_t i = 1; i < ranges.size(); ++i ) - { - int elemID = ranges[ i ].fromID; - int toID = ranges[ i ].toID; - SMESHDS_SubMesh * smDS = meshDS->NewSubMesh( ranges[ i ].shapeID ); - if ( isNode ) - for ( ; elemID < toID; ++elemID ) - smDS->AddNode( meshDS->FindNode( elemID )); - else - for ( ; elemID < toID; ++elemID ) - smDS->AddElement( meshDS->FindElement( elemID )); - - if ( SMESH_subMesh* sm = _impl->GetSubMeshContaining( ranges[ i ].shapeID )) - sm->ComputeStateEngine( SMESH_subMesh::CHECK_COMPUTE_STATE ); - } - } - for ( unsigned int nodeID = 1; nodeID < positions.size(); ++nodeID ) - if ( positions[ nodeID ]) - if ( SMDS_MeshNode* n = const_cast< SMDS_MeshNode*>( meshDS->FindNode( nodeID ))) - n->SetPosition( positions[ nodeID ], n->GetShapeID() ); - - // restore icons - _gen_i->UpdateIcons( SMESH::SMESH_Mesh_var( _this() )); - } - - TPythonDump() << "SHAPERSTUDY.breakLinkForSubElements(salome.ObjectToSObject(" - << me <<".GetMesh()), " << entry.in() << ")"; - - TPythonDump() << me << ".ReplaceShape( " << entry.in() << " )"; - -} - //================================================================================ /*! * \brief Return false if the mesh is not yet fully loaded from the study file @@ -530,7 +388,7 @@ static SMESH::ComputeError* ConvertComputeError( SMESH_ComputeErrorPtr errorPtr /*! * ImportMEDFile * - * Imports mesh data from MED file + * Import mesh data from MED file */ //============================================================================= @@ -568,7 +426,7 @@ SMESH_Mesh_i::ImportMEDFile( const char* theFileName, const char* theMeshName ) //================================================================================ /*! - * \brief Imports mesh data from the CGNS file + * \brief Import mesh data from the CGNS file */ //================================================================================ @@ -620,6 +478,7 @@ char* SMESH_Mesh_i::GetVersionString(CORBA::Long minor, CORBA::Short nbDigits) * encoded in 10*major+minor (for instance, code for med 3.2.1 is 32) */ //================================================================================ + SMESH::long_array* SMESH_Mesh_i::GetMEDVersionsCompatibleForAppend() { SMESH::long_array_var aResult = new SMESH::long_array(); @@ -635,7 +494,7 @@ SMESH::long_array* SMESH_Mesh_i::GetMEDVersionsCompatibleForAppend() /*! * ImportUNVFile * - * Imports mesh data from MED file + * Import mesh data from MED file */ //============================================================================= @@ -665,9 +524,10 @@ int SMESH_Mesh_i::ImportUNVFile( const char* theFileName ) /*! * ImportSTLFile * - * Imports mesh data from STL file + * Import mesh data from STL file */ //============================================================================= + int SMESH_Mesh_i::ImportSTLFile( const char* theFileName ) throw ( SALOME::SALOME_Exception ) { @@ -708,7 +568,7 @@ namespace //================================================================================ /*! - * \brief Imports data from a GMF file and returns an error description + * \brief Import data from a GMF file and Return an error description */ //================================================================================ @@ -742,7 +602,7 @@ SMESH::ComputeError* SMESH_Mesh_i::ImportGMFFile( const char* theFileName, //============================================================================= /*! - * + * \brief Convert SMESH_Hypothesis::Hypothesis_Status into SMESH::Hypothesis_Status */ //============================================================================= @@ -776,7 +636,7 @@ SMESH::Hypothesis_Status SMESH_Mesh_i::ConvertHypothesisStatus /*! * AddHypothesis * - * calls internal addHypothesis() and then adds a reference to under + * Call internal addHypothesis() and then add a reference to under * the SObject actually having a reference to . * NB: For this method to work, it is necessary to add a reference to sub-shape first. */ @@ -816,11 +676,11 @@ SMESH_Mesh_i::AddHypothesis(GEOM::GEOM_Object_ptr aSubShape, return ConvertHypothesisStatus(status); } -//============================================================================= +//================================================================================ /*! - * + * \brief Create a sub-mesh and add a hypothesis to it */ -//============================================================================= +//================================================================================ SMESH_Hypothesis::Hypothesis_Status SMESH_Mesh_i::addHypothesis(GEOM::GEOM_Object_ptr aSubShape, @@ -871,13 +731,13 @@ SMESH_Mesh_i::addHypothesis(GEOM::GEOM_Object_ptr aSubShape, return status; } -//============================================================================= +//================================================================================ /*! - * + * \brief Un-assign a hypothesis from a sub-mesh dedicate to the given sub-shape */ -//============================================================================= +//================================================================================ -SMESH::Hypothesis_Status SMESH_Mesh_i::RemoveHypothesis(GEOM::GEOM_Object_ptr aSubShape, +SMESH::Hypothesis_Status SMESH_Mesh_i::RemoveHypothesis(GEOM::GEOM_Object_ptr aSubShape, SMESH::SMESH_Hypothesis_ptr anHyp) throw(SALOME::SALOME_Exception) { @@ -906,7 +766,7 @@ SMESH::Hypothesis_Status SMESH_Mesh_i::RemoveHypothesis(GEOM::GEOM_Object_ptr aS //============================================================================= /*! - * + * \brief Un-assign a hypothesis from a sub-mesh dedicate to the given sub-shape */ //============================================================================= @@ -950,11 +810,11 @@ SMESH_Mesh_i::removeHypothesis(GEOM::GEOM_Object_ptr aSubShape, return status; } -//============================================================================= +//================================================================================ /*! - * + * \brief Return hypotheses assigned to a given sub-shape */ -//============================================================================= +//================================================================================ SMESH::ListOfHypothesis * SMESH_Mesh_i::GetHypothesisList(GEOM::GEOM_Object_ptr aSubShape) @@ -992,6 +852,12 @@ throw(SALOME::SALOME_Exception) return aList._retn(); } +//================================================================================ +/*! + * \brief Return sub-meshes + */ +//================================================================================ + SMESH::submesh_array* SMESH_Mesh_i::GetSubMeshes() throw (SALOME::SALOME_Exception) { Unexpect aCatch(SALOME_SalomeException); @@ -1028,11 +894,11 @@ SMESH::submesh_array* SMESH_Mesh_i::GetSubMeshes() throw (SALOME::SALOME_Excepti return aList._retn(); } -//============================================================================= +//================================================================================ /*! - * + * \brief Create and return a sub-mesh on the given sub-shape */ -//============================================================================= +//================================================================================ SMESH::SMESH_subMesh_ptr SMESH_Mesh_i::GetSubMesh(GEOM::GEOM_Object_ptr aSubShape, const char* theName ) @@ -1081,11 +947,11 @@ SMESH::SMESH_subMesh_ptr SMESH_Mesh_i::GetSubMesh(GEOM::GEOM_Object_ptr aSubShap return subMesh._retn(); } -//============================================================================= +//================================================================================ /*! - * + * \brief Remove a sub-mesh */ -//============================================================================= +//================================================================================ void SMESH_Mesh_i::RemoveSubMesh( SMESH::SMESH_subMesh_ptr theSubMesh ) throw (SALOME::SALOME_Exception) @@ -1124,11 +990,11 @@ void SMESH_Mesh_i::RemoveSubMesh( SMESH::SMESH_subMesh_ptr theSubMesh ) SMESH_CATCH( SMESH::throwCorbaException ); } -//============================================================================= +//================================================================================ /*! - * + * \brief Create a standalone group */ -//============================================================================= +//================================================================================ SMESH::SMESH_Group_ptr SMESH_Mesh_i::CreateGroup( SMESH::ElementType theElemType, const char* theName ) @@ -1154,11 +1020,12 @@ SMESH::SMESH_Group_ptr SMESH_Mesh_i::CreateGroup( SMESH::ElementType theElemType return aNewGroup._retn(); } -//============================================================================= +//================================================================================ /*! - * + * \brief Create a group based on the given geometry */ -//============================================================================= +//================================================================================ + SMESH::SMESH_GroupOnGeom_ptr SMESH_Mesh_i::CreateGroupFromGEOM (SMESH::ElementType theElemType, const char* theName, @@ -1238,11 +1105,11 @@ SMESH_Mesh_i::CreateGroupFromFilter(SMESH::ElementType theElemType, return aNewGroup._retn(); } -//============================================================================= +//================================================================================ /*! - * + * \brief Remove a group */ -//============================================================================= +//================================================================================ void SMESH_Mesh_i::RemoveGroup( SMESH::SMESH_GroupBase_ptr theGroup ) throw (SALOME::SALOME_Exception) @@ -1582,6 +1449,7 @@ SMESH::SMESH_Group_ptr SMESH_Mesh_i::IntersectGroups( SMESH::SMESH_GroupBase_ptr \return pointer on the group */ //============================================================================= + SMESH::SMESH_Group_ptr SMESH_Mesh_i::IntersectListOfGroups(const SMESH::ListOfGroups& theGroups, const char* theName ) @@ -1731,6 +1599,7 @@ SMESH::SMESH_Group_ptr SMESH_Mesh_i::CutGroups( SMESH::SMESH_GroupBase_ptr theGr \return pointer on the group */ //============================================================================= + SMESH::SMESH_Group_ptr SMESH_Mesh_i::CutListOfGroups(const SMESH::ListOfGroups& theMainGroups, const SMESH::ListOfGroups& theToolGroups, @@ -2170,11 +2039,155 @@ void SMESH_Mesh_i::removeGeomGroupData(CORBA::Object_ptr theSmeshObj) } } +//================================================================================ +/*! +* \brief Replace a shape in the mesh upon Break Link +*/ +//================================================================================ + +void SMESH_Mesh_i::ReplaceShape(GEOM::GEOM_Object_ptr theNewGeom) + throw (SALOME::SALOME_Exception) +{ + // check if geometry changed + bool geomChanged = true; + GEOM::GEOM_Object_var oldGeom = GetShapeToMesh(); + if ( !theNewGeom->_is_nil() && !oldGeom->_is_nil() ) + geomChanged = ( //oldGeom->_is_equivalent( theNewGeom ) || + oldGeom->GetTick() < theNewGeom->GetTick() ); + + TopoDS_Shape S = _impl->GetShapeToMesh(); + GEOM_Client* geomClient = _gen_i->GetShapeReader(); + TCollection_AsciiString aIOR; + CORBA::String_var ior; + if ( geomClient->Find( S, aIOR )) + geomClient->RemoveShapeFromBuffer( aIOR ); + + // clear buffer also for sub-groups + const std::set& groups = _impl->GetMeshDS()->GetGroups(); + std::set::const_iterator g = groups.begin(); + for (; g != groups.end(); ++g) + if (const SMESHDS_GroupOnGeom* group = dynamic_cast(*g)) + { + const TopoDS_Shape& s = group->GetShape(); + if ( geomClient->Find( s, aIOR )) + geomClient->RemoveShapeFromBuffer( aIOR ); + } + + typedef struct { + int shapeID, fromID, toID; // indices of elements of a sub-mesh + } TRange; + std::vector< TRange > elemRanges, nodeRanges; // elements of sub-meshes + std::vector< SMDS_PositionPtr > positions; // node positions + SMESHDS_Mesh* meshDS = _impl->GetMeshDS(); + if ( !geomChanged ) + { + // store positions of elements on geometry + Load(); + if ( meshDS->MaxNodeID() > meshDS->NbNodes() || + meshDS->MaxElementID() > meshDS->NbElements() ) + { + meshDS->Modified(); + meshDS->CompactMesh(); + } + positions.resize( meshDS->NbNodes() + 1 ); + for ( SMDS_NodeIteratorPtr nodeIt = meshDS->nodesIterator(); nodeIt->more(); ) + { + const SMDS_MeshNode* n = nodeIt->next(); + positions[ n->GetID() ] = n->GetPosition(); + } + + // remove elements from sub-meshes to avoid their removal at hypotheses addition + for ( int isNode = 0; isNode < 2; ++isNode ) + { + std::vector< TRange > & ranges = isNode ? nodeRanges : elemRanges; + ranges.reserve( meshDS->MaxShapeIndex() + 10 ); + ranges.push_back( TRange{ 0,0,0 }); + SMDS_ElemIteratorPtr elemIt = meshDS->elementsIterator( isNode ? SMDSAbs_Node : SMDSAbs_All ); + while ( elemIt->more() ) + { + const SMDS_MeshElement* e = elemIt->next(); + const int elemID = e->GetID(); + const int shapeID = e->GetShapeID(); + TRange & lastRange = ranges.back(); + if ( lastRange.shapeID != shapeID || + lastRange.toID != elemID ) + ranges.push_back( TRange{ shapeID, elemID, elemID + 1 }); + else + lastRange.toID = elemID + 1; + + if ( SMESHDS_SubMesh* sm = meshDS->MeshElements( shapeID )) + { + if ( isNode ) sm->RemoveNode( static_cast< const SMDS_MeshNode *>( e )); + else sm->RemoveElement( e ); + } + } + } + } + + + // update the reference to theNewGeom (needed for correct execution of a dumped python script) + SMESH::SMESH_Mesh_var me = _this(); + SALOMEDS::SObject_wrap aSO = _gen_i->ObjectToSObject( me ); + CORBA::String_var entry = theNewGeom->GetStudyEntry(); + if ( !aSO->_is_nil() ) + { + SALOMEDS::SObject_wrap aShapeRefSO; + if ( aSO->FindSubObject( _gen_i->GetRefOnShapeTag(), aShapeRefSO.inout() )) + { + SALOMEDS::SObject_wrap aShapeSO = _gen_i->getStudyServant()->FindObjectID( entry ); + SALOMEDS::StudyBuilder_var builder = _gen_i->getStudyServant()->NewBuilder(); + builder->Addreference( aShapeRefSO, aShapeSO ); + } + } + + // re-assign global hypotheses to the new shape + _mainShapeTick = geomChanged ? -1 : theNewGeom->GetTick(); + CheckGeomModif( true ); + + if ( !geomChanged ) + { + // restore positions of elements on geometry + for ( int isNode = 0; isNode < 2; ++isNode ) + { + std::vector< TRange > & ranges = isNode ? nodeRanges : elemRanges; + for ( size_t i = 1; i < ranges.size(); ++i ) + { + int elemID = ranges[ i ].fromID; + int toID = ranges[ i ].toID; + SMESHDS_SubMesh * smDS = meshDS->NewSubMesh( ranges[ i ].shapeID ); + if ( isNode ) + for ( ; elemID < toID; ++elemID ) + smDS->AddNode( meshDS->FindNode( elemID )); + else + for ( ; elemID < toID; ++elemID ) + smDS->AddElement( meshDS->FindElement( elemID )); + + if ( SMESH_subMesh* sm = _impl->GetSubMeshContaining( ranges[ i ].shapeID )) + sm->ComputeStateEngine( SMESH_subMesh::CHECK_COMPUTE_STATE ); + } + } + for ( unsigned int nodeID = 1; nodeID < positions.size(); ++nodeID ) + if ( positions[ nodeID ]) + if ( SMDS_MeshNode* n = const_cast< SMDS_MeshNode*>( meshDS->FindNode( nodeID ))) + n->SetPosition( positions[ nodeID ], n->GetShapeID() ); + + // restore icons + _gen_i->UpdateIcons( SMESH::SMESH_Mesh_var( _this() )); + } + + TPythonDump() << "SHAPERSTUDY.breakLinkForSubElements(salome.ObjectToSObject(" + << me <<".GetMesh()), " << entry.in() << ")"; + + TPythonDump() << me << ".ReplaceShape( " << entry.in() << " )"; + +} + //================================================================================ /*! * \brief Return new group contents if it has been changed and update group data */ //================================================================================ + enum { ONLY_IF_CHANGED, IS_BREAK_LINK, MAIN_TRANSFORMED }; TopoDS_Shape SMESH_Mesh_i::newGroupShape( TGeomGroupData & groupData, int how ) @@ -3110,11 +3123,11 @@ SMESH::SMESH_Group_ptr SMESH_Mesh_i::ConvertToStandalone( SMESH::SMESH_GroupBase return aGroup._retn(); } -//============================================================================= +//================================================================================ /*! - * + * \brief Create a sub-mesh on a given sub-shape */ -//============================================================================= +//================================================================================ SMESH::SMESH_subMesh_ptr SMESH_Mesh_i::createSubMesh( GEOM::GEOM_Object_ptr theSubShapeObject ) { @@ -3160,10 +3173,11 @@ SMESH::SMESH_subMesh_ptr SMESH_Mesh_i::createSubMesh( GEOM::GEOM_Object_ptr theS return subMesh._retn(); } -//======================================================================= -//function : getSubMesh -//purpose : -//======================================================================= +//================================================================================ +/*! + * \brief Return an existing sub-mesh based on a sub-shape with the given ID + */ +//================================================================================ SMESH::SMESH_subMesh_ptr SMESH_Mesh_i::getSubMesh(int shapeID) { @@ -3174,11 +3188,11 @@ SMESH::SMESH_subMesh_ptr SMESH_Mesh_i::getSubMesh(int shapeID) return SMESH::SMESH_subMesh::_duplicate( (*it).second ); } -//============================================================================= +//================================================================================ /*! - * + * \brief Remove a sub-mesh based on the given sub-shape */ -//============================================================================= +//================================================================================ bool SMESH_Mesh_i::removeSubMesh (SMESH::SMESH_subMesh_ptr theSubMesh, GEOM::GEOM_Object_ptr theSubShapeObject ) @@ -3240,11 +3254,11 @@ bool SMESH_Mesh_i::removeSubMesh (SMESH::SMESH_subMesh_ptr theSubMesh, return isHypChanged; } -//============================================================================= +//================================================================================ /*! - * + * \brief Create a group. Group type depends on given arguments */ -//============================================================================= +//================================================================================ SMESH::SMESH_GroupBase_ptr SMESH_Mesh_i::createGroup (SMESH::ElementType theElemType, const char* theName, @@ -3322,11 +3336,11 @@ void SMESH_Mesh_i::removeGroup( const int theId ) } } -//============================================================================= +//================================================================================ /*! - * + * \brief Return a log that can be used to move another mesh to the same state as this one */ -//============================================================================= +//================================================================================ SMESH::log_array * SMESH_Mesh_i::GetLog(CORBA::Boolean clearAfterGet) throw(SALOME::SALOME_Exception) @@ -3341,22 +3355,17 @@ SMESH::log_array * SMESH_Mesh_i::GetLog(CORBA::Boolean clearAfterGet) aLog = new SMESH::log_array; int indexLog = 0; int lg = logDS.size(); - SCRUTE(lg); aLog->length(lg); list < SMESHDS_Command * >::iterator its = logDS.begin(); while(its != logDS.end()){ SMESHDS_Command *com = *its; int comType = com->GetType(); - //SCRUTE(comType); int lgcom = com->GetNumber(); - //SCRUTE(lgcom); const list < int >&intList = com->GetIndexes(); int inum = intList.size(); - //SCRUTE(inum); list < int >::const_iterator ii = intList.begin(); const list < double >&coordList = com->GetCoords(); int rnum = coordList.size(); - //SCRUTE(rnum); list < double >::const_iterator ir = coordList.begin(); aLog[indexLog].commandType = comType; aLog[indexLog].number = lgcom; @@ -3364,12 +3373,10 @@ SMESH::log_array * SMESH_Mesh_i::GetLog(CORBA::Boolean clearAfterGet) aLog[indexLog].indexes.length(inum); for(int i = 0; i < rnum; i++){ aLog[indexLog].coords[i] = *ir; - //MESSAGE(" "<& theRese //============================================================================= /*! - * Sets auto-color mode. If it is on, groups get unique random colors + * Set auto-color mode. If it is on, groups get unique random colors */ //============================================================================= @@ -3625,7 +3631,7 @@ void SMESH_Mesh_i::SetAutoColor(CORBA::Boolean theAutoColor) throw(SALOME::SALOM //============================================================================= /*! - * Returns true if auto-color mode is on + * Return true if auto-color mode is on */ //============================================================================= @@ -3637,7 +3643,7 @@ CORBA::Boolean SMESH_Mesh_i::GetAutoColor() throw(SALOME::SALOME_Exception) //============================================================================= /*! - * Checks if there are groups with equal names + * Check if there are groups with equal names */ //============================================================================= @@ -3689,7 +3695,7 @@ void SMESH_Mesh_i::PrepareForWriting (const char* file, bool overwrite) //================================================================================ /*! - * \brief Prepares a file for export and pass names of mesh groups from study to mesh DS + * \brief Prepare a file for export and pass names of mesh groups from study to mesh DS * \param file - file name * \param overwrite - to erase the file or not * \retval string - mesh name @@ -4410,6 +4416,12 @@ CORBA::Double SMESH_Mesh_i::GetComputeProgress() return 0.; } +//================================================================================ +/*! + * \brief Return nb of nodes + */ +//================================================================================ + CORBA::Long SMESH_Mesh_i::NbNodes()throw(SALOME::SALOME_Exception) { Unexpect aCatch(SALOME_SalomeException); @@ -4419,6 +4431,12 @@ CORBA::Long SMESH_Mesh_i::NbNodes()throw(SALOME::SALOME_Exception) return _impl->NbNodes(); } +//================================================================================ +/*! + * \brief Return nb of elements + */ +//================================================================================ + CORBA::Long SMESH_Mesh_i::NbElements()throw (SALOME::SALOME_Exception) { Unexpect aCatch(SALOME_SalomeException); @@ -4428,6 +4446,12 @@ CORBA::Long SMESH_Mesh_i::NbElements()throw (SALOME::SALOME_Exception) return Nb0DElements() + NbEdges() + NbFaces() + NbVolumes() + NbBalls(); } +//================================================================================ +/*! + * \brief Return nb of 0D elements + */ +//================================================================================ + CORBA::Long SMESH_Mesh_i::Nb0DElements()throw (SALOME::SALOME_Exception) { Unexpect aCatch(SALOME_SalomeException); @@ -4437,6 +4461,12 @@ CORBA::Long SMESH_Mesh_i::Nb0DElements()throw (SALOME::SALOME_Exception) return _impl->Nb0DElements(); } +//================================================================================ +/*! + * \brief Return nb of BALL elements + */ +//================================================================================ + CORBA::Long SMESH_Mesh_i::NbBalls() throw (SALOME::SALOME_Exception) { Unexpect aCatch(SALOME_SalomeException); @@ -4446,6 +4476,12 @@ CORBA::Long SMESH_Mesh_i::NbBalls() throw (SALOME::SALOME_Exception) return _impl->NbBalls(); } +//================================================================================ +/*! + * \brief Return nb of 1D elements + */ +//================================================================================ + CORBA::Long SMESH_Mesh_i::NbEdges()throw(SALOME::SALOME_Exception) { Unexpect aCatch(SALOME_SalomeException); @@ -4455,6 +4491,12 @@ CORBA::Long SMESH_Mesh_i::NbEdges()throw(SALOME::SALOME_Exception) return _impl->NbEdges(); } +//================================================================================ +/*! + * \brief Return nb of edges + */ +//================================================================================ + CORBA::Long SMESH_Mesh_i::NbEdgesOfOrder(SMESH::ElementOrder order) throw(SALOME::SALOME_Exception) { @@ -4465,7 +4507,11 @@ CORBA::Long SMESH_Mesh_i::NbEdgesOfOrder(SMESH::ElementOrder order) return _impl->NbEdges( (SMDSAbs_ElementOrder) order); } -//============================================================================= +//================================================================================ +/*! + * \brief Return nb of faces + */ +//================================================================================ CORBA::Long SMESH_Mesh_i::NbFaces()throw(SALOME::SALOME_Exception) { @@ -4476,6 +4522,12 @@ CORBA::Long SMESH_Mesh_i::NbFaces()throw(SALOME::SALOME_Exception) return _impl->NbFaces(); } +//================================================================================ +/*! + * \brief Return nb of tringles + */ +//================================================================================ + CORBA::Long SMESH_Mesh_i::NbTriangles()throw(SALOME::SALOME_Exception) { Unexpect aCatch(SALOME_SalomeException); @@ -4485,6 +4537,12 @@ CORBA::Long SMESH_Mesh_i::NbTriangles()throw(SALOME::SALOME_Exception) return _impl->NbTriangles(); } +//================================================================================ +/*! + * \brief Return nb of bi-quadratic triangles + */ +//================================================================================ + CORBA::Long SMESH_Mesh_i::NbBiQuadTriangles()throw(SALOME::SALOME_Exception) { Unexpect aCatch(SALOME_SalomeException); @@ -4686,7 +4744,7 @@ CORBA::Long SMESH_Mesh_i::NbPrismsOfOrder(SMESH::ElementOrder order) //============================================================================= /*! - * Returns nb of published sub-meshes + * Return nb of published sub-meshes */ //============================================================================= @@ -4722,7 +4780,7 @@ SMESH::long_array* SMESH_Mesh_i::GetIDs() //============================================================================= /*! - * Returns ids of all elements + * Return ids of all elements */ //============================================================================= @@ -4751,7 +4809,7 @@ SMESH::long_array* SMESH_Mesh_i::GetElementsId() //============================================================================= /*! - * Returns ids of all elements of given type + * Return ids of all elements of given type */ //============================================================================= @@ -4791,7 +4849,7 @@ SMESH::long_array* SMESH_Mesh_i::GetElementsByType( SMESH::ElementType theElemTy //============================================================================= /*! - * Returns ids of all nodes + * Return ids of all nodes */ //============================================================================= @@ -4819,7 +4877,7 @@ SMESH::long_array* SMESH_Mesh_i::GetNodesId() //============================================================================= /*! - * + * Return type of the given element */ //============================================================================= @@ -4841,7 +4899,7 @@ SMESH::ElementType SMESH_Mesh_i::GetElementType( const CORBA::Long id, const boo //============================================================================= /*! - * + * Return geometric type of the given element */ //============================================================================= @@ -4860,7 +4918,7 @@ SMESH::EntityType SMESH_Mesh_i::GetElementGeomType( const CORBA::Long id ) //============================================================================= /*! - * + * Return type of the given element */ //============================================================================= @@ -4879,9 +4937,10 @@ SMESH::GeometryType SMESH_Mesh_i::GetElementShape( const CORBA::Long id ) //============================================================================= /*! - * Returns ID of elements for given submesh + * Return ID of elements for given submesh */ //============================================================================= + SMESH::long_array* SMESH_Mesh_i::GetSubMeshElementsId(const CORBA::Long ShapeID) throw (SALOME::SALOME_Exception) { @@ -4912,9 +4971,9 @@ SMESH::long_array* SMESH_Mesh_i::GetSubMeshElementsId(const CORBA::Long ShapeID) //============================================================================= /*! - * Returns ID of nodes for given submesh - * If param all==true - returns all nodes, else - - * returns only nodes on shapes. + * Return ID of nodes for given sub-mesh + * If param all==true - Return all nodes, else - + * Return only nodes on shapes. */ //============================================================================= @@ -4967,7 +5026,7 @@ SMESH::long_array* SMESH_Mesh_i::GetSubMeshNodesId(const CORBA::Long ShapeID, //============================================================================= /*! - * Returns type of elements for given submesh + * Return type of elements for given sub-mesh */ //============================================================================= @@ -5002,7 +5061,7 @@ SMESH::ElementType SMESH_Mesh_i::GetSubMeshElementType(const CORBA::Long ShapeID //============================================================================= /*! - * Returns pointer to _impl as an integer value. Is called from constructor of SMESH_Client + * Return pointer to _impl as an integer value. Is called from constructor of SMESH_Client */ //============================================================================= @@ -5020,7 +5079,7 @@ CORBA::LongLong SMESH_Mesh_i::GetMeshPtr() //============================================================================= /*! * Get XYZ coordinates of node as list of double - * If there is not node for given ID - returns empty list + * If there is not node for given ID - Return empty list */ //============================================================================= @@ -5050,8 +5109,8 @@ SMESH::double_array* SMESH_Mesh_i::GetNodeXYZ(const CORBA::Long id) //============================================================================= /*! - * For given node returns list of IDs of inverse elements - * If there is not node for given ID - returns empty list + * For given node Return list of IDs of inverse elements + * If there is not node for given ID - Return empty list */ //============================================================================= @@ -5184,8 +5243,8 @@ SMESH::ElementPosition SMESH_Mesh_i::GetElementPosition(CORBA::Long ElemID) //============================================================================= /*! - * If given element is node returns IDs of shape from position - * If there is not node for given ID - returns -1 + * If given element is node Return IDs of shape from position + * If there is not node for given ID - Return -1 */ //============================================================================= @@ -5210,9 +5269,9 @@ CORBA::Long SMESH_Mesh_i::GetShapeID(const CORBA::Long id) //============================================================================= /*! - * For given element returns ID of result shape after + * For given element return ID of result shape after * ::FindShape() from SMESH_MeshEditor - * If there is not element for given ID - returns -1 + * If there is not element for given ID - Return -1 */ //============================================================================= @@ -5241,8 +5300,8 @@ CORBA::Long SMESH_Mesh_i::GetShapeIDForElem(const CORBA::Long id) //============================================================================= /*! - * Returns number of nodes for given element - * If there is not element for given ID - returns -1 + * Return number of nodes for given element + * If there is not element for given ID - Return -1 */ //============================================================================= @@ -5262,9 +5321,9 @@ CORBA::Long SMESH_Mesh_i::GetElemNbNodes(const CORBA::Long id) //============================================================================= /*! - * Returns ID of node by given index for given element - * If there is not element for given ID - returns -1 - * If there is not node for given index - returns -2 + * Return ID of node by given index for given element + * If there is not element for given ID - Return -1 + * If there is not node for given index - Return -2 */ //============================================================================= @@ -5283,7 +5342,7 @@ CORBA::Long SMESH_Mesh_i::GetElemNode(const CORBA::Long id, const CORBA::Long in //============================================================================= /*! - * Returns IDs of nodes of given element + * Return IDs of nodes of given element */ //============================================================================= @@ -5308,7 +5367,7 @@ SMESH::long_array* SMESH_Mesh_i::GetElemNodes(const CORBA::Long id) //============================================================================= /*! - * Returns true if given node is medium node + * Return true if given node is medium node * in given quadratic element */ //============================================================================= @@ -5333,7 +5392,7 @@ CORBA::Boolean SMESH_Mesh_i::IsMediumNode(const CORBA::Long ide, const CORBA::Lo //============================================================================= /*! - * Returns true if given node is medium node + * Return true if given node is medium node * in one of quadratic elements */ //============================================================================= @@ -5365,7 +5424,7 @@ CORBA::Boolean SMESH_Mesh_i::IsMediumNodeOfAnyElem(const CORBA::Long idn, //============================================================================= /*! - * Returns number of edges for given element + * Return number of edges for given element */ //============================================================================= @@ -5384,7 +5443,7 @@ CORBA::Long SMESH_Mesh_i::ElemNbEdges(const CORBA::Long id) //============================================================================= /*! - * Returns number of faces for given element + * Return number of faces for given element */ //============================================================================= @@ -5400,10 +5459,11 @@ CORBA::Long SMESH_Mesh_i::ElemNbFaces(const CORBA::Long id) return elem->NbFaces(); } -//======================================================================= -//function : GetElemFaceNodes -//purpose : Returns nodes of given face (counted from zero) for given element. -//======================================================================= +//================================================================================ +/*! + * \brief Return nodes of given face (counted from zero) for given element. + */ +//================================================================================ SMESH::long_array* SMESH_Mesh_i::GetElemFaceNodes(CORBA::Long elemId, CORBA::Short faceIndex) @@ -5429,10 +5489,11 @@ SMESH::long_array* SMESH_Mesh_i::GetElemFaceNodes(CORBA::Long elemId, return aResult._retn(); } -//======================================================================= -//function : GetFaceNormal -//purpose : Returns three components of normal of given mesh face. -//======================================================================= +//================================================================================ +/*! + * \brief Return three components of normal of given mesh face. + */ +//================================================================================ SMESH::double_array* SMESH_Mesh_i::GetFaceNormal(CORBA::Long elemId, CORBA::Boolean normalized) @@ -5456,10 +5517,11 @@ SMESH::double_array* SMESH_Mesh_i::GetFaceNormal(CORBA::Long elemId, return aResult._retn(); } -//======================================================================= -//function : FindElementByNodes -//purpose : Returns an element based on all given nodes. -//======================================================================= +//================================================================================ +/*! + * \brief Return an element based on all given nodes. + */ +//================================================================================ CORBA::Long SMESH_Mesh_i::FindElementByNodes(const SMESH::long_array& nodes) { @@ -5516,7 +5578,7 @@ SMESH::long_array* SMESH_Mesh_i::GetElementsByNodes(const SMESH::long_array& nod //============================================================================= /*! - * Returns true if given element is polygon + * Return true if given element is polygon */ //============================================================================= @@ -5535,7 +5597,7 @@ CORBA::Boolean SMESH_Mesh_i::IsPoly(const CORBA::Long id) //============================================================================= /*! - * Returns true if given element is quadratic + * Return true if given element is quadratic */ //============================================================================= @@ -5553,7 +5615,7 @@ CORBA::Boolean SMESH_Mesh_i::IsQuadratic(const CORBA::Long id) //============================================================================= /*! - * Returns diameter of ball discrete element or zero in case of an invalid \a id + * Return diameter of ball discrete element or zero in case of an invalid \a id */ //============================================================================= @@ -5571,7 +5633,7 @@ CORBA::Double SMESH_Mesh_i::GetBallDiameter(CORBA::Long id) //============================================================================= /*! - * Returns bary center for given element + * Return bary center for given element */ //============================================================================= @@ -5901,7 +5963,7 @@ void SMESH_Mesh_i::checkGroupNames() //============================================================================= /*! - * \brief Sets list of notebook variables used for Mesh operations separated by ":" symbol + * \brief Set list of notebook variables used for Mesh operations separated by ":" symbol */ //============================================================================= void SMESH_Mesh_i::SetParameters(const char* theParameters) @@ -5912,7 +5974,7 @@ void SMESH_Mesh_i::SetParameters(const char* theParameters) //============================================================================= /*! - * \brief Returns list of notebook variables used for Mesh operations separated by ":" symbol + * \brief Return list of notebook variables used for Mesh operations separated by ":" symbol */ //============================================================================= @@ -5923,7 +5985,7 @@ char* SMESH_Mesh_i::GetParameters() //============================================================================= /*! - * \brief Returns list of notebook variables used for last Mesh operation + * \brief Return list of notebook variables used for last Mesh operation */ //============================================================================= SMESH::string_array* SMESH_Mesh_i::GetLastParameters() @@ -5943,10 +6005,11 @@ SMESH::string_array* SMESH_Mesh_i::GetLastParameters() return aResult._retn(); } -//======================================================================= -//function : GetTypes -//purpose : Returns types of elements it contains -//======================================================================= +//================================================================================ +/*! + * \brief Return types of elements it contains + */ +//================================================================================ SMESH::array_of_ElementType* SMESH_Mesh_i::GetTypes() { @@ -5969,21 +6032,25 @@ SMESH::array_of_ElementType* SMESH_Mesh_i::GetTypes() return types._retn(); } -//======================================================================= -//function : GetMesh -//purpose : Returns self -//======================================================================= +//================================================================================ +/*! + * \brief Return self + */ +//================================================================================ SMESH::SMESH_Mesh_ptr SMESH_Mesh_i::GetMesh() { return SMESH::SMESH_Mesh::_duplicate( _this() ); } -//======================================================================= -//function : IsMeshInfoCorrect -//purpose : * Returns false if GetMeshInfo() returns incorrect information that may -// * happen if mesh data is not yet fully loaded from the file of study. -//======================================================================= +//================================================================================ +/*! + * \brief Return false if GetMeshInfo() Return incorrect information that may + * happen if mesh data is not yet fully loaded from the file of study. + * + * + */ +//================================================================================ bool SMESH_Mesh_i::IsMeshInfoCorrect() { @@ -5992,7 +6059,7 @@ bool SMESH_Mesh_i::IsMeshInfoCorrect() //============================================================================= /*! - * \brief Returns number of mesh elements per each \a EntityType + * \brief Return number of mesh elements per each \a EntityType */ //============================================================================= @@ -6016,7 +6083,7 @@ SMESH::long_array* SMESH_Mesh_i::GetMeshInfo() //============================================================================= /*! - * \brief Returns number of mesh elements per each \a ElementType + * \brief Return number of mesh elements per each \a ElementType */ //============================================================================= @@ -6055,7 +6122,7 @@ void SMESH_Mesh_i::CollectMeshInfo(const SMDS_ElemIteratorPtr theItr, } //============================================================================= /* - * Returns mesh unstructed grid information. + * Return mesh unstructed grid information. */ //=============================================================================