X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FStdMeshers_I%2FStdMeshers_ViscousLayers2D_i.cxx;h=86fb6df025c7c8bd6d4a13e19a9894fa214f1546;hb=d9f4b53e489dd5857db264ede6acded7b076c9f1;hp=b60672a9ea16c319e128c15889667f3d3b53e3b4;hpb=1067ffa6e7e5c394e3a1b17219d8b355a57607cd;p=modules%2Fsmesh.git diff --git a/src/StdMeshers_I/StdMeshers_ViscousLayers2D_i.cxx b/src/StdMeshers_I/StdMeshers_ViscousLayers2D_i.cxx index b60672a9e..86fb6df02 100644 --- a/src/StdMeshers_I/StdMeshers_ViscousLayers2D_i.cxx +++ b/src/StdMeshers_I/StdMeshers_ViscousLayers2D_i.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2022 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 @@ -47,14 +47,11 @@ using namespace std; //============================================================================= StdMeshers_ViscousLayers2D_i::StdMeshers_ViscousLayers2D_i( PortableServer::POA_ptr thePOA, - int theStudyId, ::SMESH_Gen* theGenImpl ) : SALOME::GenericObj_i( thePOA ), SMESH_Hypothesis_i( thePOA ) { - MESSAGE( "StdMeshers_ViscousLayers2D_i::StdMeshers_ViscousLayers2D_i" ); myBaseImpl = new ::StdMeshers_ViscousLayers2D( theGenImpl->GetANewId(), - theStudyId, theGenImpl ); } @@ -68,7 +65,6 @@ StdMeshers_ViscousLayers2D_i::StdMeshers_ViscousLayers2D_i( PortableServer::POA_ StdMeshers_ViscousLayers2D_i::~StdMeshers_ViscousLayers2D_i() { - MESSAGE( "StdMeshers_ViscousLayers2D_i::~StdMeshers_ViscousLayers2D_i" ); } //================================================================================ @@ -77,15 +73,17 @@ StdMeshers_ViscousLayers2D_i::~StdMeshers_ViscousLayers2D_i() */ //================================================================================ -void StdMeshers_ViscousLayers2D_i::SetIgnoreEdges(const ::SMESH::long_array& edgeIDs) -throw ( SALOME::SALOME_Exception ) +void StdMeshers_ViscousLayers2D_i::SetEdges(const ::SMESH::long_array& edgeIDs, + CORBA::Boolean toIgnore) { vector ids( edgeIDs.length() ); for ( unsigned i = 0; i < ids.size(); ++i ) if (( ids[i] = edgeIDs[i] ) < 1 ) THROW_SALOME_CORBA_EXCEPTION( "Invalid edge id", SALOME::BAD_PARAM ); - GetImpl()->SetBndShapesToIgnore( ids ); - SMESH::TPythonDump() << _this() << ".SetIgnoreEdges( " << edgeIDs << " )"; + + GetImpl()->SetBndShapes( ids, toIgnore ); + + SMESH::TPythonDump() << _this() << ".SetEdges( " << edgeIDs << ", " << toIgnore << " )"; } //================================================================================ @@ -94,9 +92,22 @@ throw ( SALOME::SALOME_Exception ) */ //================================================================================ -SMESH::long_array* StdMeshers_ViscousLayers2D_i::GetIgnoreEdges() +void StdMeshers_ViscousLayers2D_i::SetIgnoreEdges(const ::SMESH::long_array& edgeIDs) { - vector idsVec = GetImpl()->GetBndShapesToIgnore(); + SMESH::TPythonDump pyDump; + this->SetEdges( edgeIDs, true ); + pyDump<< _this() << ".SetIgnoreEdges( " << edgeIDs << " )"; +} + +//================================================================================ +/*! + * \brief + */ +//================================================================================ + +SMESH::long_array* StdMeshers_ViscousLayers2D_i::GetEdges() +{ + vector idsVec = GetImpl()->GetBndShapes(); SMESH::long_array_var ids = new SMESH::long_array; ids->length( idsVec.size() ); for ( unsigned i = 0; i < idsVec.size(); ++i ) @@ -110,8 +121,31 @@ SMESH::long_array* StdMeshers_ViscousLayers2D_i::GetIgnoreEdges() */ //================================================================================ +SMESH::long_array* StdMeshers_ViscousLayers2D_i::GetIgnoreEdges() +{ + if ( GetImpl()->IsToIgnoreShapes() ) + return this->GetEdges(); + return new SMESH::long_array; +} + +//================================================================================ +/*! + * \brief + */ +//================================================================================ + +CORBA::Boolean StdMeshers_ViscousLayers2D_i::GetIsToIgnoreEdges() +{ + return GetImpl()->IsToIgnoreShapes(); +} + +//================================================================================ +/*! + * \brief + */ +//================================================================================ + void StdMeshers_ViscousLayers2D_i::SetTotalThickness(::CORBA::Double thickness) -throw ( SALOME::SALOME_Exception ) { if ( thickness < 1e-100 ) THROW_SALOME_CORBA_EXCEPTION( "Invalid thickness", SALOME::BAD_PARAM ); @@ -138,7 +172,6 @@ throw ( SALOME::SALOME_Exception ) //================================================================================ void StdMeshers_ViscousLayers2D_i::SetNumberLayers(::CORBA::Short nb) -throw ( SALOME::SALOME_Exception ) { if ( nb < 1 ) THROW_SALOME_CORBA_EXCEPTION( "Invalid number of layers", SALOME::BAD_PARAM ); @@ -165,7 +198,6 @@ throw ( SALOME::SALOME_Exception ) //================================================================================ void StdMeshers_ViscousLayers2D_i::SetStretchFactor(::CORBA::Double factor) -throw ( SALOME::SALOME_Exception ) { if ( factor < 1 ) THROW_SALOME_CORBA_EXCEPTION( "Invalid stretch factor, it must be >= 1.0", SALOME::BAD_PARAM ); @@ -185,6 +217,33 @@ throw ( SALOME::SALOME_Exception ) return GetImpl()->GetStretchFactor(); } +//================================================================================ +/*! + * \brief Set name of a group of layers elements + */ +//================================================================================ + +void StdMeshers_ViscousLayers2D_i::SetGroupName(const char* name) +{ + if ( GetImpl()->GetGroupName() != name ) + { + GetImpl()->SetGroupName( name ); + SMESH::TPythonDump() << _this() << ".SetGroupName( '" << name << "' )"; + } +} + +//================================================================================ +/*! + * \brief Return name of a group of layers elements + */ +//================================================================================ + +char* StdMeshers_ViscousLayers2D_i::GetGroupName() +{ + return CORBA::string_dup( GetImpl()->GetGroupName().c_str() ); +} + + //============================================================================= /*! * Get implementation @@ -193,19 +252,18 @@ throw ( SALOME::SALOME_Exception ) ::StdMeshers_ViscousLayers2D* StdMeshers_ViscousLayers2D_i::GetImpl() { - MESSAGE( "StdMeshers_ViscousLayers2D_i::GetImpl" ); return ( ::StdMeshers_ViscousLayers2D* )myBaseImpl; } //================================================================================ /*! - * \brief Verify whether hypothesis supports given entity type - * \param type - dimension (see SMESH::Dimension enumeration) - * \retval CORBA::Boolean - TRUE if dimension is supported, FALSE otherwise - * + * \brief Verify whether hypothesis supports given entity type + * \param type - dimension (see SMESH::Dimension enumeration) + * \retval CORBA::Boolean - TRUE if dimension is supported, FALSE otherwise + * * Verify whether hypothesis supports given entity type (see SMESH::Dimension enumeration) */ -//================================================================================ +//================================================================================ CORBA::Boolean StdMeshers_ViscousLayers2D_i::IsDimSupported( SMESH::Dimension type ) { @@ -215,7 +273,7 @@ CORBA::Boolean StdMeshers_ViscousLayers2D_i::IsDimSupported( SMESH::Dimension ty //================================================================================ /*! * \brief Sets sub-mesh event listeners to clear sub-meshes of edges - * shrinked by viscous layers + * shrinked by viscous layers */ //================================================================================ @@ -223,3 +281,43 @@ void StdMeshers_ViscousLayers2D_i::UpdateAsMeshesRestored() { GetImpl()->RestoreListeners(); } + +//================================================================================ +/*! + * \brief Return geometry this hypothesis depends on. Return false if there is no geometry parameter + */ +//================================================================================ + +bool +StdMeshers_ViscousLayers2D_i::getObjectsDependOn( std::vector< std::string > & /*entryArray*/, + std::vector< int > & subIDArray ) const +{ + const ::StdMeshers_ViscousLayers2D* impl = + static_cast( myBaseImpl ); + + subIDArray = impl->GetBndShapes(); + + return true; +} + +//================================================================================ +/*! + * \brief Set new geometry instead of that returned by getObjectsDependOn() + */ +//================================================================================ + +bool +StdMeshers_ViscousLayers2D_i::setObjectsDependOn( std::vector< std::string > & /*entryArray*/, + std::vector< int > & subIDArray ) +{ + std::vector< int > newIDs; + newIDs.reserve( subIDArray.size() ); + + for ( size_t i = 0; i < subIDArray.size(); ++i ) + if ( subIDArray[ i ] > 0 ) + newIDs.push_back( subIDArray[ i ]); + + GetImpl()->SetBndShapes( newIDs, GetIsToIgnoreEdges() ); + + return true; +}