diff --git a/src/NETGENPlugin/NETGENPluginBuilder.py b/src/NETGENPlugin/NETGENPluginBuilder.py index 7334ae3..fc60826 100644 --- a/src/NETGENPlugin/NETGENPluginBuilder.py +++ b/src/NETGENPlugin/NETGENPluginBuilder.py @@ -182,6 +182,14 @@ class NETGEN_Algorithm(Mesh_Algorithm): self.Parameters().SetMeshSizeFile(file) pass + ## Set size of elements on a shape + # @param shape - geometry + # @param size - element size + def SetLocalSizeOnShape(self, shape, size ): + self.Parameters().SetLocalSizeOnShape(shape, size) + pass + + pass # end of NETGEN_Algorithm class diff --git a/src/NETGENPlugin/NETGENPlugin_Hypothesis.cxx b/src/NETGENPlugin/NETGENPlugin_Hypothesis.cxx index 9bd9ec8..6117e47 100644 --- a/src/NETGENPlugin/NETGENPlugin_Hypothesis.cxx +++ b/src/NETGENPlugin/NETGENPlugin_Hypothesis.cxx @@ -53,7 +53,6 @@ NETGENPlugin_Hypothesis::NETGENPlugin_Hypothesis (int hypId, int studyId, _chordalError (GetDefaultChordalError() ), _secondOrder (GetDefaultSecondOrder()), _optimize (GetDefaultOptimize()), - _localSize (GetDefaultLocalSize()), _quadAllowed (GetDefaultQuadAllowed()), _surfaceCurvature (GetDefaultSurfaceCurvature()), _fuseEdges (GetDefaultFuseEdges()) diff --git a/src/NETGENPlugin/NETGENPlugin_Hypothesis.hxx b/src/NETGENPlugin/NETGENPlugin_Hypothesis.hxx index 44f9095..a8c4e10 100644 --- a/src/NETGENPlugin/NETGENPlugin_Hypothesis.hxx +++ b/src/NETGENPlugin/NETGENPlugin_Hypothesis.hxx @@ -89,8 +89,7 @@ public: double GetChordalError() const { return _chordalError; } typedef std::map TLocalSize; - static TLocalSize GetDefaultLocalSize() { return TLocalSize(); } - void SetLocalSizeOnEntry(const std::string& entry, double localSize); + void SetLocalSizeOnEntry(const std::string& entry, double localSize); double GetLocalSizeOnEntry(const std::string& entry); const TLocalSize& GetLocalSizesAndEntries() const { return _localSize; } void UnsetLocalSizeOnEntry(const std::string& entry); diff --git a/src/NETGENPlugin/NETGENPlugin_Hypothesis_i.cxx b/src/NETGENPlugin/NETGENPlugin_Hypothesis_i.cxx index 11461d6..35e859d 100644 --- a/src/NETGENPlugin/NETGENPlugin_Hypothesis_i.cxx +++ b/src/NETGENPlugin/NETGENPlugin_Hypothesis_i.cxx @@ -536,3 +536,51 @@ std::string NETGENPlugin_Hypothesis_i::getMethodOfParameter(const int paramIndex } return ""; } + +//================================================================================ +/*! + * \brief Return geometry this hypothesis depends on. Return false if there is no geometry parameter + */ +//================================================================================ + +bool +NETGENPlugin_Hypothesis_i::getObjectsDependOn( std::vector< std::string > & entryArray, + std::vector< int > & subIDArray ) const +{ + typedef ::NETGENPlugin_Hypothesis THyp; + + const THyp* h = static_cast< ::NETGENPlugin_Hypothesis* >( myBaseImpl ); + const THyp::TLocalSize& ls = h->GetLocalSizesAndEntries(); + + THyp::TLocalSize::const_iterator entry2size = ls.cbegin(); + for ( ; entry2size != ls.cend(); ++entry2size ) + entryArray.push_back( entry2size->first ); + + return true; +} + +//================================================================================ +/*! + * \brief Set new geometry instead of that returned by getObjectsDependOn() + */ +//================================================================================ + +bool +NETGENPlugin_Hypothesis_i::setObjectsDependOn( std::vector< std::string > & entryArray, + std::vector< int > & subIDArray ) +{ + typedef ::NETGENPlugin_Hypothesis THyp; + + const THyp* h = static_cast< ::NETGENPlugin_Hypothesis* >( myBaseImpl ); + + THyp::TLocalSize& lsNew = const_cast< THyp::TLocalSize& >( h->GetLocalSizesAndEntries() ); + THyp::TLocalSize ls; + lsNew.swap( ls ); + + THyp::TLocalSize::const_iterator entry2size = ls.cbegin(); + for ( int i = 0; entry2size != ls.cend(); ++entry2size, ++i ) + if ( !entryArray[ i ].empty() ) + lsNew[ entryArray[ i ]] = entry2size->second; + + return true; +} diff --git a/src/NETGENPlugin/NETGENPlugin_Hypothesis_i.hxx b/src/NETGENPlugin/NETGENPlugin_Hypothesis_i.hxx index e9b908d..fbbbd74 100644 --- a/src/NETGENPlugin/NETGENPlugin_Hypothesis_i.hxx +++ b/src/NETGENPlugin/NETGENPlugin_Hypothesis_i.hxx @@ -109,6 +109,17 @@ class NETGENPLUGIN_EXPORT NETGENPlugin_Hypothesis_i: // Verify whether hypothesis supports given entity type CORBA::Boolean IsDimSupported( SMESH::Dimension type ); + + // Methods for copying mesh definition to other geometry + + // Return geometry this hypothesis depends on. Return false if there is no geometry parameter + virtual bool getObjectsDependOn( std::vector< std::string > & entryArray, + std::vector< int > & subIDArray ) const; + + // Set new geometry instead of that returned by getObjectsDependOn() + virtual bool setObjectsDependOn( std::vector< std::string > & entryArray, + std::vector< int > & subIDArray ); + protected: // to remember whether a parameter is already set (issue 0021364) @@ -128,7 +139,7 @@ class NETGENPLUGIN_EXPORT NETGENPlugin_Hypothesis_i: METH_SetFuseEdges = METH_SetSurfaceCurvature * 2, METH_SetChordalErrorEnabled = METH_SetFuseEdges * 2, METH_SetChordalError = METH_SetChordalErrorEnabled * 2, - METH_LAST = METH_SetFuseEdges + METH_LAST = METH_SetChordalError }; int mySetMethodFlags; diff --git a/src/NETGENPlugin/NETGENPlugin_SimpleHypothesis_2D_i.hxx b/src/NETGENPlugin/NETGENPlugin_SimpleHypothesis_2D_i.hxx index 06ba90d..50037cc 100644 --- a/src/NETGENPlugin/NETGENPlugin_SimpleHypothesis_2D_i.hxx +++ b/src/NETGENPlugin/NETGENPlugin_SimpleHypothesis_2D_i.hxx @@ -81,6 +81,17 @@ class NETGENPLUGIN_EXPORT NETGENPlugin_SimpleHypothesis_2D_i: // into myMethod2VarParams. It should return a method name for an index of // variable parameters. Index is countered from zero virtual std::string getMethodOfParameter(const int paramIndex, int nbVars) const; + + + // Methods for copying mesh definition to other geometry + + // Return geometry this hypothesis depends on. Return false if there is no geometry parameter + virtual bool getObjectsDependOn( std::vector< std::string > & entryArray, + std::vector< int > & subIDArray ) const { return 0; } + + // Set new geometry instead of that returned by getObjectsDependOn() + virtual bool setObjectsDependOn( std::vector< std::string > & entryArray, + std::vector< int > & subIDArray ) { return true; } }; #endif diff --git a/src/NETGENPlugin/NETGENPlugin_SimpleHypothesis_3D_i.hxx b/src/NETGENPlugin/NETGENPlugin_SimpleHypothesis_3D_i.hxx index 940a807..f8b1746 100644 --- a/src/NETGENPlugin/NETGENPlugin_SimpleHypothesis_3D_i.hxx +++ b/src/NETGENPlugin/NETGENPlugin_SimpleHypothesis_3D_i.hxx @@ -59,6 +59,17 @@ class NETGENPLUGIN_EXPORT NETGENPlugin_SimpleHypothesis_3D_i: // Verify whether hypothesis supports given entity type CORBA::Boolean IsDimSupported( SMESH::Dimension type ); + + + // Methods for copying mesh definition to other geometry + + // Return geometry this hypothesis depends on. Return false if there is no geometry parameter + virtual bool getObjectsDependOn( std::vector< std::string > & entryArray, + std::vector< int > & subIDArray ) const { return 0; } + + // Set new geometry instead of that returned by getObjectsDependOn() + virtual bool setObjectsDependOn( std::vector< std::string > & entryArray, + std::vector< int > & subIDArray ) { return true; } }; #endif