#include "StdMeshersGUI_Parameters.h"
+//#include "SMESHGUI_SpinBox.h" // for the sake of COORD_MAX, COORD_MIN definition
+
#include <qobject.h>
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 :
(hypType.compare("Arithmetic1D") == 0));
}
+//=======================================================================
+//function : SetInitValue
+//purpose :
+//=======================================================================
+
+void StdMeshersGUI_Parameters::SetInitValue(SMESHGUI_aParameterPtr param,
+ int initValue)
+{
+ SMESHGUI_intParameter* p = dynamic_cast<SMESHGUI_intParameter*>(param.get());
+ if ( p ) p->InitValue() = initValue;
+}
+
+//=======================================================================
+//function : SetInitValue
+//purpose :
+//=======================================================================
+
+void StdMeshersGUI_Parameters::SetInitValue(SMESHGUI_aParameterPtr param,
+ double initValue)
+{
+ SMESHGUI_doubleParameter* p = dynamic_cast<SMESHGUI_doubleParameter*>(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<SMESHGUI_strParameter*>(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))
{
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));
}
}
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()) ;
+ }
}
//=======================================================================
params = "";
list<SMESHGUI_aParameterPtr>::iterator paramIt = paramList.begin();
for ( ; paramIt != paramList.end(); paramIt++) {
- int aIntValue;
- double aDoubleValue;
if (params.compare("")) params += " ; ";
- if ((*paramIt)->GetType() == SMESHGUI_aParameter::INT) {
- (*paramIt)->GetNewInt(aIntValue);
- params += QString::number(aIntValue);;
+
+ if ((*paramIt)->GetType() == SMESHGUI_aParameter::DOUBLE ) {
+ double aDoubleValue = 0.;
+ (*paramIt)->GetNewDouble(aDoubleValue);
+ params += QString::number(aDoubleValue);
+ }
+ else if ((*paramIt)->GetType() == SMESHGUI_aParameter::TEXT ) {
+ QString aStrValue( "" );
+ (*paramIt)->GetNewText(aStrValue);
+ params += aStrValue.simplifyWhiteSpace();
}
else {
- (*paramIt)->GetNewDouble(aDoubleValue);
- params += QString::number(aDoubleValue);
+ int aIntValue = 0;
+ (*paramIt)->GetNewInt(aIntValue);
+ params += QString::number(aIntValue);
}
}
}
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)
{