X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FStdMeshers_I%2FStdMeshers_ViscousLayers_i.cxx;h=914d92260c364cc5621412940418e2d69dfb8c3c;hb=6df8817c1a9827149025cc942249d7083f504d3d;hp=55ca30d75905209e02866600dfcba7d4f4dfe012;hpb=bd4e115a78b52e3fbc016e5e30bb0e19b2a9e7d6;p=modules%2Fsmesh.git diff --git a/src/StdMeshers_I/StdMeshers_ViscousLayers_i.cxx b/src/StdMeshers_I/StdMeshers_ViscousLayers_i.cxx index 55ca30d75..914d92260 100644 --- a/src/StdMeshers_I/StdMeshers_ViscousLayers_i.cxx +++ b/src/StdMeshers_I/StdMeshers_ViscousLayers_i.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2012 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 @@ -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 @@ -20,7 +20,7 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses +// SMESH SMESH_I : idl implementation based on 'SMESH' unit's classes // File : StdMeshers_ViscousLayers_i.cxx // Module : SMESH // @@ -48,14 +48,11 @@ using namespace std; //============================================================================= StdMeshers_ViscousLayers_i::StdMeshers_ViscousLayers_i( PortableServer::POA_ptr thePOA, - int theStudyId, ::SMESH_Gen* theGenImpl ) : SALOME::GenericObj_i( thePOA ), SMESH_Hypothesis_i( thePOA ) { - MESSAGE( "StdMeshers_ViscousLayers_i::StdMeshers_ViscousLayers_i" ); myBaseImpl = new ::StdMeshers_ViscousLayers( theGenImpl->GetANewId(), - theStudyId, theGenImpl ); } @@ -69,7 +66,6 @@ StdMeshers_ViscousLayers_i::StdMeshers_ViscousLayers_i( PortableServer::POA_ptr StdMeshers_ViscousLayers_i::~StdMeshers_ViscousLayers_i() { - MESSAGE( "StdMeshers_ViscousLayers_i::~StdMeshers_ViscousLayers_i" ); } //================================================================================ @@ -78,15 +74,18 @@ StdMeshers_ViscousLayers_i::~StdMeshers_ViscousLayers_i() */ //================================================================================ -void StdMeshers_ViscousLayers_i::SetIgnoreFaces(const ::SMESH::long_array& faceIDs) -throw ( SALOME::SALOME_Exception ) +void StdMeshers_ViscousLayers_i::SetFaces(const ::SMESH::long_array& faceIDs, + CORBA::Boolean toIgnore) + throw ( SALOME::SALOME_Exception ) { vector ids( faceIDs.length() ); for ( unsigned i = 0; i < ids.size(); ++i ) if (( ids[i] = faceIDs[i] ) < 1 ) THROW_SALOME_CORBA_EXCEPTION( "Invalid face id", SALOME::BAD_PARAM ); - GetImpl()->SetIgnoreFaces( ids ); - SMESH::TPythonDump() << _this() << ".SetIgnoreFaces( " << faceIDs << " )"; + + GetImpl()->SetBndShapes( ids, toIgnore ); + + SMESH::TPythonDump() << _this() << ".SetFaces( " << faceIDs << ", " << toIgnore << " )"; } //================================================================================ @@ -95,9 +94,9 @@ throw ( SALOME::SALOME_Exception ) */ //================================================================================ -SMESH::long_array* StdMeshers_ViscousLayers_i::GetIgnoreFaces() +SMESH::long_array* StdMeshers_ViscousLayers_i::GetFaces() { - vector idsVec = GetImpl()->GetIgnoreFaces(); + 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 ) @@ -111,6 +110,47 @@ SMESH::long_array* StdMeshers_ViscousLayers_i::GetIgnoreFaces() */ //================================================================================ +SMESH::long_array* StdMeshers_ViscousLayers_i::GetIgnoreFaces() +{ + if ( GetImpl()->IsToIgnoreShapes() ) + return this->GetFaces(); + return new SMESH::long_array; +} + +//================================================================================ +/*! + * \brief + */ +//================================================================================ + +CORBA::Boolean StdMeshers_ViscousLayers_i::GetIsToIgnoreFaces() +{ + return GetImpl()->IsToIgnoreShapes(); +} + +//================================================================================ +/*! + * \brief + */ +//================================================================================ + +void StdMeshers_ViscousLayers_i::SetIgnoreFaces(const ::SMESH::long_array& faceIDs) +throw ( SALOME::SALOME_Exception ) +{ + vector ids( faceIDs.length() ); + for ( unsigned i = 0; i < ids.size(); ++i ) + if (( ids[i] = faceIDs[i] ) < 1 ) + THROW_SALOME_CORBA_EXCEPTION( "Invalid face id", SALOME::BAD_PARAM ); + GetImpl()->SetBndShapes( ids, /*toIgnore=*/true ); + SMESH::TPythonDump() << _this() << ".SetIgnoreFaces( " << faceIDs << " )"; +} + +//================================================================================ +/*! + * \brief + */ +//================================================================================ + void StdMeshers_ViscousLayers_i::SetTotalThickness(::CORBA::Double thickness) throw ( SALOME::SALOME_Exception ) { @@ -186,6 +226,33 @@ throw ( SALOME::SALOME_Exception ) return GetImpl()->GetStretchFactor(); } +//================================================================================ +/*! + * \brief Set Method of computing translation of a node + */ +//================================================================================ + +void StdMeshers_ViscousLayers_i::SetMethod( ::StdMeshers::VLExtrusionMethod how ) +{ + GetImpl()->SetMethod( ::StdMeshers_ViscousLayers::ExtrusionMethod( how )); + const char* methNames[3] = { "SURF_OFFSET_SMOOTH", + "FACE_OFFSET", + "NODE_OFFSET" }; + if ( how >= 0 && how < 3 ) + SMESH::TPythonDump() << _this() << ".SetMethod( StdMeshers." << methNames[ how ]<< " )"; +} + +//================================================================================ +/*! + * \brief Return Method of computing translation of a node + */ +//================================================================================ + +::StdMeshers::VLExtrusionMethod StdMeshers_ViscousLayers_i::GetMethod() +{ + return (::StdMeshers::VLExtrusionMethod) GetImpl()->GetMethod(); +} + //============================================================================= /*! * Get implementation @@ -194,7 +261,6 @@ throw ( SALOME::SALOME_Exception ) ::StdMeshers_ViscousLayers* StdMeshers_ViscousLayers_i::GetImpl() { - MESSAGE( "StdMeshers_ViscousLayers_i::GetImpl" ); return ( ::StdMeshers_ViscousLayers* )myBaseImpl; } @@ -229,3 +295,44 @@ std::string StdMeshers_ViscousLayers_i::getMethodOfParameter(const int paramInde } return ""; } + + +//================================================================================ +/*! + * \brief Return geometry this hypothesis depends on. Return false if there is no geometry parameter + */ +//================================================================================ + +bool +StdMeshers_ViscousLayers_i::getObjectsDependOn( std::vector< std::string > & entryArray, + std::vector< int > & subIDArray ) const +{ + const ::StdMeshers_ViscousLayers* impl = + static_cast( myBaseImpl ); + + subIDArray = impl->GetBndShapes(); + + return true; +} + +//================================================================================ +/*! + * \brief Set new geometry instead of that returned by getObjectsDependOn() + */ +//================================================================================ + +bool +StdMeshers_ViscousLayers_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, GetIsToIgnoreFaces() ); + + return true; +}