X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FStdMeshersGUI%2FStdMeshersGUI_Parameters.cxx;h=b7e447b3e46c7258c33391da8d0df08126a859de;hb=d4cdc63f906b23d652210f050b650ae75ea96043;hp=2a292ea5a1902965f6b9e95e316d842f6539d83b;hpb=3036ecaa2577a1fb892f75e20ba11e91cbe42b37;p=modules%2Fsmesh.git diff --git a/src/StdMeshersGUI/StdMeshersGUI_Parameters.cxx b/src/StdMeshersGUI/StdMeshersGUI_Parameters.cxx index 2a292ea5a..b7e447b3e 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_Parameters.cxx +++ b/src/StdMeshersGUI/StdMeshersGUI_Parameters.cxx @@ -26,10 +26,20 @@ #include "StdMeshersGUI_Parameters.h" +//#include "SMESHGUI_SpinBox.h" // for the sake of COORD_MAX, COORD_MIN definition + #include using namespace std; +#define VALUE_MAX 1.0e+15 // COORD_MAX +#define VALUE_MAX_2 (VALUE_MAX*VALUE_MAX) +#define VALUE_MAX_3 (VALUE_MAX*VALUE_MAX*VALUE_MAX) + +#define VALUE_SMALL 1.0e-15 +#define VALUE_SMALL_2 (VALUE_SMALL*VALUE_SMALL) +#define VALUE_SMALL_3 (VALUE_SMALL*VALUE_SMALL*VALUE_SMALL) + //======================================================================= //function : HasParameters //purpose : @@ -46,11 +56,48 @@ bool StdMeshersGUI_Parameters::HasParameters (const QString& hypType) (hypType.compare("Arithmetic1D") == 0)); } +//======================================================================= +//function : SetInitValue +//purpose : +//======================================================================= + +void StdMeshersGUI_Parameters::SetInitValue(SMESHGUI_aParameterPtr param, + int initValue) +{ + SMESHGUI_intParameter* p = dynamic_cast(param.get()); + if ( p ) p->InitValue() = initValue; +} + +//======================================================================= +//function : SetInitValue +//purpose : +//======================================================================= + +void StdMeshersGUI_Parameters::SetInitValue(SMESHGUI_aParameterPtr param, + double initValue) +{ + SMESHGUI_doubleParameter* p = dynamic_cast(param.get()); + if ( p ) p->InitValue() = initValue; +} + +//======================================================================= +//function : SetInitValue +//purpose : +//======================================================================= + +void StdMeshersGUI_Parameters::SetInitValue(SMESHGUI_aParameterPtr param, + const char* initValue) +{ + SMESHGUI_strParameter* p = dynamic_cast(param.get()); + if ( p ) p->InitValue() = initValue; +} + //======================================================================= //function : GetParameters //purpose : //======================================================================= +// SMESHGUI_doubleParameter( initValue, label, bottom, top, step, decimals ) #define DOUBLE_PARAM(v,l,b,t,s,d) SMESHGUI_aParameterPtr(new SMESHGUI_doubleParameter(v,l,b,t,s,d)) #define INT_PARAM(v,l,b,t) SMESHGUI_aParameterPtr(new SMESHGUI_intParameter(v,l,b,t)) @@ -63,49 +110,52 @@ void StdMeshersGUI_Parameters::GetParameters (const QString& hyp { paramList.push_back( DOUBLE_PARAM (1.0, QObject::tr("SMESH_LOCAL_LENGTH_PARAM"), - 0.001, 999.999, 1.0, 3)); + VALUE_SMALL, VALUE_MAX, 1.0, 6)); } else if (hypType.compare("NumberOfSegments") == 0) { paramList.push_back ( INT_PARAM (3, QObject::tr("SMESH_NB_SEGMENTS_PARAM"), 1, 9999 )); + paramList.push_back ( DOUBLE_PARAM (1.0, + QObject::tr("SMESH_NB_SEGMENTS_SCALE_PARAM"), + VALUE_SMALL, VALUE_MAX, 0.1, 6 )); } else if (hypType.compare("Arithmetic1D") == 0) { paramList.push_back( DOUBLE_PARAM ( 1.0, QObject::tr("SMESH_START_LENGTH_PARAM"), - 1.0E-5, 1E6, 1, 6)); + VALUE_SMALL, VALUE_MAX, 1, 6)); paramList.push_back( DOUBLE_PARAM ( 10.0, QObject::tr("SMESH_END_LENGTH_PARAM"), - 1.0E-5, 1E6, 1, 6)); + VALUE_SMALL, VALUE_MAX, 1, 6)); } else if (hypType.compare("MaxElementArea") == 0) { paramList.push_back( DOUBLE_PARAM (1.0, QObject::tr("SMESH_MAX_ELEMENT_AREA_PARAM"), - 0.001, 999999.999, 1.0, 3)); + VALUE_SMALL_2, VALUE_MAX_2, 1.0, 6)); } else if (hypType.compare("MaxElementVolume") == 0) { paramList.push_back( DOUBLE_PARAM ( 1.0, QObject::tr("SMESH_MAX_ELEMENT_VOLUME_PARAM"), - 0.001, 999999.999, 1.0, 3)); + VALUE_SMALL_3, VALUE_MAX_3, 1.0, 6)); } else if (hypType.compare("StartEndLength") == 0) { paramList.push_back( DOUBLE_PARAM ( 1.0, QObject::tr("SMESH_START_LENGTH_PARAM"), - 1.0E-5, 1E6, 1, 6)); + VALUE_SMALL, VALUE_MAX, 1, 6)); paramList.push_back( DOUBLE_PARAM ( 10.0, QObject::tr("SMESH_END_LENGTH_PARAM"), - 1.0E-5, 1E6, 1, 6)); + VALUE_SMALL, VALUE_MAX, 1, 6)); } else if (hypType.compare("Deflection1D") == 0) { paramList.push_back( DOUBLE_PARAM ( 1.0, QObject::tr("SMESH_DEFLECTION1D_PARAM"), - 1.0E-5, 1E6, 1, 6)); + VALUE_SMALL, VALUE_MAX, 1, 6)); } } @@ -122,78 +172,56 @@ void StdMeshersGUI_Parameters::GetParameters (SMESH::SMESH_Hypothesis_ptr the if (theHyp->_is_nil()) return; QString hypType = theHyp->GetName(); + GetParameters( hypType, paramList ); // get default parameters + if ( paramList.empty() ) + return; + // set current values if (hypType.compare("LocalLength") == 0) { StdMeshers::StdMeshers_LocalLength_var LL = StdMeshers::StdMeshers_LocalLength::_narrow(theHyp); - double length = LL->GetLength(); - paramList.push_back( DOUBLE_PARAM (length, - QObject::tr("SMESH_LOCAL_LENGTH_PARAM"), - 0.001, 999.999, 1.0, 3)); + SetInitValue( paramList.front(), LL->GetLength() ); } else if (hypType.compare("NumberOfSegments") == 0) { StdMeshers::StdMeshers_NumberOfSegments_var NOS = StdMeshers::StdMeshers_NumberOfSegments::_narrow(theHyp); - int NbSeg = NOS->GetNumberOfSegments() ; - paramList.push_back ( INT_PARAM (NbSeg, - QObject::tr("SMESH_NB_SEGMENTS_PARAM"), - 1, 9999 )); + SetInitValue( paramList.front(), (int) NOS->GetNumberOfSegments()); + SetInitValue( paramList.back(), NOS->GetScaleFactor()); } else if (hypType.compare("Arithmetic1D") == 0) { StdMeshers::StdMeshers_Arithmetic1D_var hyp = StdMeshers::StdMeshers_Arithmetic1D::_narrow(theHyp); - double begLength = hyp->GetLength( true ) ; - double endLength = hyp->GetLength( false ) ; - paramList.push_back( DOUBLE_PARAM ( begLength, - QObject::tr("SMESH_START_LENGTH_PARAM"), - 1.0E-5, 1E6, 1, 6)); - paramList.push_back( DOUBLE_PARAM ( endLength, - QObject::tr("SMESH_END_LENGTH_PARAM"), - 1.0E-5, 1E6, 1, 6)); + SetInitValue( paramList.front(), hyp->GetLength( true )) ; + SetInitValue( paramList.back(), hyp->GetLength( false )) ; } else if (hypType.compare("MaxElementArea") == 0) { StdMeshers::StdMeshers_MaxElementArea_var MEA = StdMeshers::StdMeshers_MaxElementArea::_narrow(theHyp); - double MaxArea = MEA->GetMaxElementArea(); - paramList.push_back( DOUBLE_PARAM (MaxArea, - QObject::tr("SMESH_MAX_ELEMENT_AREA_PARAM"), - 0.001, 999999.999, 1.0, 3)); + SetInitValue( paramList.front(), MEA->GetMaxElementArea() ); } else if (hypType.compare("MaxElementVolume") == 0) { StdMeshers::StdMeshers_MaxElementVolume_var MEV = StdMeshers::StdMeshers_MaxElementVolume::_narrow(theHyp); - double MaxVolume = MEV->GetMaxElementVolume() ; - paramList.push_back( DOUBLE_PARAM ( MaxVolume, - QObject::tr("SMESH_MAX_ELEMENT_VOLUME_PARAM"), - 0.001, 999999.999, 1.0, 3)); + SetInitValue( paramList.front(), MEV->GetMaxElementVolume() ); } else if (hypType.compare("StartEndLength") == 0) { StdMeshers::StdMeshers_StartEndLength_var hyp = StdMeshers::StdMeshers_StartEndLength::_narrow(theHyp); - double begLength = hyp->GetLength( true ) ; - double endLength = hyp->GetLength( false ) ; - paramList.push_back( DOUBLE_PARAM ( begLength, - QObject::tr("SMESH_START_LENGTH_PARAM"), - 1.0E-5, 1E6, 1, 6)); - paramList.push_back( DOUBLE_PARAM ( endLength, - QObject::tr("SMESH_END_LENGTH_PARAM"), - 1.0E-5, 1E6, 1, 6)); + SetInitValue( paramList.front(), hyp->GetLength( true )); + SetInitValue( paramList.back(), hyp->GetLength( false )); } else if (hypType.compare("Deflection1D") == 0) { StdMeshers::StdMeshers_Deflection1D_var hyp = StdMeshers::StdMeshers_Deflection1D::_narrow(theHyp); - double value = hyp->GetDeflection() ; - paramList.push_back( DOUBLE_PARAM ( value, - QObject::tr("SMESH_DEFLECTION1D_PARAM"), - 1.0E-5, 1E6, 1, 6)); - } + SetInitValue( paramList.back(), hyp->GetDeflection()) ; + } } //======================================================================= @@ -222,7 +250,7 @@ void StdMeshersGUI_Parameters::GetParameters (SMESH::SMESH_Hypothesis_ptr else { int aIntValue = 0; (*paramIt)->GetNewInt(aIntValue); - params += QString::number(aIntValue);; + params += QString::number(aIntValue); } } } @@ -254,8 +282,11 @@ bool StdMeshersGUI_Parameters::SetParameters(SMESH::SMESH_Hypothesis_ptr StdMeshers::StdMeshers_NumberOfSegments_var NOS = StdMeshers::StdMeshers_NumberOfSegments::_narrow(theHyp); int NbSeg = NOS->GetNumberOfSegments(); + double Scale = NOS->GetScaleFactor() ; modified = paramList.front()->GetNewInt( NbSeg ); + modified = paramList.back()->GetNewDouble( Scale ) || modified; NOS->SetNumberOfSegments(NbSeg); + NOS->SetScaleFactor( Scale ); } else if (hypType.compare("Arithmetic1D") == 0) {