Parametrization of the NETGENPLUGIN.

This commit is contained in:
rnv 2008-12-01 10:42:37 +00:00
parent b66afe6860
commit d32bd5c9d6
2 changed files with 67 additions and 17 deletions

View File

@ -29,6 +29,7 @@
#include <SMESHGUI_Utils.h> #include <SMESHGUI_Utils.h>
#include <SMESHGUI_HypothesesUtils.h> #include <SMESHGUI_HypothesesUtils.h>
#include <SMESHGUI.h>
#include CORBA_SERVER_HEADER(NETGENPlugin_Algorithm) #include CORBA_SERVER_HEADER(NETGENPlugin_Algorithm)
@ -37,7 +38,7 @@
#include <SalomeApp_Tools.h> #include <SalomeApp_Tools.h>
#include <QtxDoubleSpinBox.h> #include <SalomeApp_DoubleSpinBox.h>
#include <QComboBox> #include <QComboBox>
#include <QLabel> #include <QLabel>
@ -68,13 +69,18 @@ NETGENPluginGUI_HypothesisCreator::~NETGENPluginGUI_HypothesisCreator()
{ {
} }
bool NETGENPluginGUI_HypothesisCreator::checkParams() const bool NETGENPluginGUI_HypothesisCreator::checkParams(QString& msg) const
{ {
NetgenHypothesisData data_old, data_new; NetgenHypothesisData data_old, data_new;
readParamsFromHypo( data_old ); readParamsFromHypo( data_old );
readParamsFromWidgets( data_new ); readParamsFromWidgets( data_new );
bool res = storeParamsToHypo( data_new ); bool res = storeParamsToHypo( data_new );
storeParamsToHypo( data_old ); storeParamsToHypo( data_old );
res = myMaxSize->isValid(msg,true) && res;
res = myGrowthRate->isValid(msg,true) && res; ;
res = myNbSegPerEdge->isValid(msg,true) && res;
res = myNbSegPerRadius->isValid(msg,true) && res;
return res; return res;
} }
@ -104,7 +110,7 @@ QFrame* NETGENPluginGUI_HypothesisCreator::buildFrame()
} }
aGroupLayout->addWidget( new QLabel( tr( "NETGEN_MAX_SIZE" ), GroupC1 ), row, 0 ); aGroupLayout->addWidget( new QLabel( tr( "NETGEN_MAX_SIZE" ), GroupC1 ), row, 0 );
myMaxSize = new QtxDoubleSpinBox( GroupC1 ); myMaxSize = new SalomeApp_DoubleSpinBox( GroupC1 );
myMaxSize->setDecimals( 7 ); myMaxSize->setDecimals( 7 );
myMaxSize->setMinimum( 1e-07 ); myMaxSize->setMinimum( 1e-07 );
myMaxSize->setMaximum( 1e+06 ); myMaxSize->setMaximum( 1e+06 );
@ -126,7 +132,7 @@ QFrame* NETGENPluginGUI_HypothesisCreator::buildFrame()
row++; row++;
aGroupLayout->addWidget( new QLabel( tr( "NETGEN_GROWTH_RATE" ), GroupC1 ), row, 0 ); aGroupLayout->addWidget( new QLabel( tr( "NETGEN_GROWTH_RATE" ), GroupC1 ), row, 0 );
myGrowthRate = new QtxDoubleSpinBox( GroupC1 ); myGrowthRate = new SalomeApp_DoubleSpinBox( GroupC1 );
myGrowthRate->setMinimum( 0.1 ); myGrowthRate->setMinimum( 0.1 );
myGrowthRate->setMaximum( 10 ); myGrowthRate->setMaximum( 10 );
myGrowthRate->setSingleStep( 0.1 ); myGrowthRate->setSingleStep( 0.1 );
@ -136,14 +142,14 @@ QFrame* NETGENPluginGUI_HypothesisCreator::buildFrame()
const double VALUE_MAX = 1.0e+6; const double VALUE_MAX = 1.0e+6;
aGroupLayout->addWidget( new QLabel( tr( "NETGEN_SEG_PER_EDGE" ), GroupC1 ), row, 0 ); aGroupLayout->addWidget( new QLabel( tr( "NETGEN_SEG_PER_EDGE" ), GroupC1 ), row, 0 );
myNbSegPerEdge = new QtxDoubleSpinBox( GroupC1 ); myNbSegPerEdge = new SalomeApp_DoubleSpinBox( GroupC1 );
myNbSegPerEdge->setMinimum( 0.2 ); myNbSegPerEdge->setMinimum( 0.2 );
myNbSegPerEdge->setMaximum( VALUE_MAX ); // (PAL14890) max value in native netgen gui is 5 myNbSegPerEdge->setMaximum( VALUE_MAX ); // (PAL14890) max value in native netgen gui is 5
aGroupLayout->addWidget( myNbSegPerEdge, row, 1 ); aGroupLayout->addWidget( myNbSegPerEdge, row, 1 );
row++; row++;
aGroupLayout->addWidget( new QLabel( tr( "NETGEN_SEG_PER_RADIUS" ), GroupC1 ), row, 0 ); aGroupLayout->addWidget( new QLabel( tr( "NETGEN_SEG_PER_RADIUS" ), GroupC1 ), row, 0 );
myNbSegPerRadius = new QtxDoubleSpinBox( GroupC1 ); myNbSegPerRadius = new SalomeApp_DoubleSpinBox( GroupC1 );
myNbSegPerRadius->setMinimum( 0.2 ); myNbSegPerRadius->setMinimum( 0.2 );
myNbSegPerRadius->setMaximum( VALUE_MAX ); // (PAL14890) max value in native netgen gui is 5 myNbSegPerRadius->setMaximum( VALUE_MAX ); // (PAL14890) max value in native netgen gui is 5
aGroupLayout->addWidget( myNbSegPerRadius, row, 1 ); aGroupLayout->addWidget( myNbSegPerRadius, row, 1 );
@ -173,13 +179,30 @@ void NETGENPluginGUI_HypothesisCreator::retrieveParams() const
if( myName ) if( myName )
myName->setText( data.myName ); myName->setText( data.myName );
myMaxSize->setValue( data.myMaxSize ); if(data.myMaxSizeVar.isEmpty())
myMaxSize->setValue( data.myMaxSize );
else
myMaxSize->setText( data.myMaxSizeVar );
mySecondOrder->setChecked( data.mySecondOrder ); mySecondOrder->setChecked( data.mySecondOrder );
myOptimize->setChecked( data.myOptimize ); myOptimize->setChecked( data.myOptimize );
myFineness->setCurrentIndex( data.myFineness ); myFineness->setCurrentIndex( data.myFineness );
myGrowthRate->setValue( data.myGrowthRate );
myNbSegPerEdge->setValue( data.myNbSegPerEdge ); if(data.myGrowthRateVar.isEmpty())
myNbSegPerRadius->setValue( data.myNbSegPerRadius ); myGrowthRate->setValue( data.myGrowthRate );
else
myGrowthRate->setText( data.myGrowthRateVar );
if(data.myNbSegPerEdgeVar.isEmpty())
myNbSegPerEdge->setValue( data.myNbSegPerEdge );
else
myNbSegPerEdge->setText( data.myNbSegPerEdgeVar );
if(data.myNbSegPerRadiusVar.isEmpty())
myNbSegPerRadius->setValue( data.myNbSegPerRadius );
else
myNbSegPerRadius->setText( data.myNbSegPerRadiusVar );
if (myIs2D) if (myIs2D)
myAllowQuadrangles->setChecked( data.myAllowQuadrangles ); myAllowQuadrangles->setChecked( data.myAllowQuadrangles );
@ -219,14 +242,20 @@ bool NETGENPluginGUI_HypothesisCreator::readParamsFromHypo( NetgenHypothesisData
HypothesisData* data = SMESH::GetHypothesisData( hypType() ); HypothesisData* data = SMESH::GetHypothesisData( hypType() );
h_data.myName = isCreation() && data ? data->Label : ""; h_data.myName = isCreation() && data ? data->Label : "";
SMESH::ListOfParameters_var aParameters = h->GetLastParameters();
h_data.myMaxSize = h->GetMaxSize(); h_data.myMaxSize = h->GetMaxSize();
h_data.myMaxSizeVar = (aParameters->length() > 0) ? QString(aParameters[0].in()) : QString("");
h_data.mySecondOrder = h->GetSecondOrder(); h_data.mySecondOrder = h->GetSecondOrder();
h_data.myOptimize = h->GetOptimize(); h_data.myOptimize = h->GetOptimize();
h_data.myFineness = (int) h->GetFineness(); h_data.myFineness = (int) h->GetFineness();
h_data.myGrowthRate = h->GetGrowthRate(); h_data.myGrowthRate = h->GetGrowthRate();
h_data.myGrowthRateVar = (aParameters->length() > 1) ? QString(aParameters[1].in()) : QString("");
h_data.myNbSegPerEdge = h->GetNbSegPerEdge(); h_data.myNbSegPerEdge = h->GetNbSegPerEdge();
h_data.myNbSegPerEdgeVar = (aParameters->length() > 2) ? QString(aParameters[2].in()) : QString("");
h_data.myNbSegPerRadius = h->GetNbSegPerRadius(); h_data.myNbSegPerRadius = h->GetNbSegPerRadius();
h_data.myNbSegPerRadiusVar = (aParameters->length() > 3) ? QString(aParameters[3].in()) : QString("");
if ( myIs2D ) if ( myIs2D )
{ {
@ -250,8 +279,9 @@ bool NETGENPluginGUI_HypothesisCreator::storeParamsToHypo( const NetgenHypothesi
{ {
if( isCreation() ) if( isCreation() )
SMESH::SetName( SMESH::FindSObject( h ), h_data.myName.toLatin1().data() ); SMESH::SetName( SMESH::FindSObject( h ), h_data.myName.toLatin1().data() );
QStringList aVariablesList;
h->SetMaxSize( h_data.myMaxSize ); h->SetMaxSize( h_data.myMaxSize );
aVariablesList.append(h_data.myMaxSizeVar);
h->SetSecondOrder( h_data.mySecondOrder ); h->SetSecondOrder( h_data.mySecondOrder );
h->SetOptimize( h_data.myOptimize ); h->SetOptimize( h_data.myOptimize );
int fineness = h_data.myFineness; int fineness = h_data.myFineness;
@ -262,6 +292,10 @@ bool NETGENPluginGUI_HypothesisCreator::storeParamsToHypo( const NetgenHypothesi
h->SetGrowthRate( h_data.myGrowthRate ); h->SetGrowthRate( h_data.myGrowthRate );
h->SetNbSegPerEdge( h_data.myNbSegPerEdge ); h->SetNbSegPerEdge( h_data.myNbSegPerEdge );
h->SetNbSegPerRadius( h_data.myNbSegPerRadius ); h->SetNbSegPerRadius( h_data.myNbSegPerRadius );
aVariablesList.append(h_data.myGrowthRateVar);
aVariablesList.append(h_data.myNbSegPerEdgeVar);
aVariablesList.append(h_data.myNbSegPerRadiusVar);
} }
if ( myIs2D ) if ( myIs2D )
@ -272,6 +306,15 @@ bool NETGENPluginGUI_HypothesisCreator::storeParamsToHypo( const NetgenHypothesi
if ( !h_2d->_is_nil() ) if ( !h_2d->_is_nil() )
h_2d->SetQuadAllowed( h_data.myAllowQuadrangles ); h_2d->SetQuadAllowed( h_data.myAllowQuadrangles );
} }
h->SetParameters(SMESHGUI::JoinObjectParameters(aVariablesList));
if( fineness==UserDefined )
{
h->SetParameters(SMESHGUI::JoinObjectParameters(aVariablesList));
h->SetParameters(SMESHGUI::JoinObjectParameters(aVariablesList));
h->SetParameters(SMESHGUI::JoinObjectParameters(aVariablesList));
}
} }
catch(const SALOME::SALOME_Exception& ex) catch(const SALOME::SALOME_Exception& ex)
{ {
@ -285,12 +328,18 @@ bool NETGENPluginGUI_HypothesisCreator::readParamsFromWidgets( NetgenHypothesisD
{ {
h_data.myName = myName ? myName->text() : ""; h_data.myName = myName ? myName->text() : "";
h_data.myMaxSize = myMaxSize->value(); h_data.myMaxSize = myMaxSize->value();
h_data.myMaxSizeVar = myMaxSize->text();
h_data.mySecondOrder = mySecondOrder->isChecked(); h_data.mySecondOrder = mySecondOrder->isChecked();
h_data.myOptimize = myOptimize->isChecked(); h_data.myOptimize = myOptimize->isChecked();
h_data.myFineness = myFineness->currentIndex(); h_data.myFineness = myFineness->currentIndex();
h_data.myGrowthRate = myGrowthRate->value(); h_data.myGrowthRate = myGrowthRate->value();
h_data.myNbSegPerEdge = myNbSegPerEdge->value(); h_data.myNbSegPerEdge = myNbSegPerEdge->value();
h_data.myNbSegPerRadius = myNbSegPerRadius->value(); h_data.myNbSegPerRadius = myNbSegPerRadius->value();
h_data.myGrowthRateVar = myGrowthRate->text();
h_data.myNbSegPerEdgeVar = myNbSegPerEdge->text();
h_data.myNbSegPerRadiusVar = myNbSegPerRadius->text();
if ( myIs2D ) if ( myIs2D )
h_data.myAllowQuadrangles = myAllowQuadrangles->isChecked(); h_data.myAllowQuadrangles = myAllowQuadrangles->isChecked();

View File

@ -40,7 +40,7 @@
#include <SMESHGUI_Hypotheses.h> #include <SMESHGUI_Hypotheses.h>
class QtxDoubleSpinBox; class SalomeApp_DoubleSpinBox;
class QComboBox; class QComboBox;
class QCheckBox; class QCheckBox;
class QLineEdit; class QLineEdit;
@ -51,6 +51,7 @@ typedef struct
int myFineness; int myFineness;
bool mySecondOrder, myAllowQuadrangles, myOptimize; bool mySecondOrder, myAllowQuadrangles, myOptimize;
QString myName; QString myName;
QString myMaxSizeVar, myGrowthRateVar, myNbSegPerEdgeVar, myNbSegPerRadiusVar;
} NetgenHypothesisData; } NetgenHypothesisData;
/*! /*!
@ -64,7 +65,7 @@ public:
NETGENPluginGUI_HypothesisCreator( const QString& ); NETGENPluginGUI_HypothesisCreator( const QString& );
virtual ~NETGENPluginGUI_HypothesisCreator(); virtual ~NETGENPluginGUI_HypothesisCreator();
virtual bool checkParams() const; virtual bool checkParams(QString& msg) const;
virtual QString helpPage() const; virtual QString helpPage() const;
protected: protected:
@ -86,13 +87,13 @@ private:
private: private:
QLineEdit* myName; QLineEdit* myName;
QtxDoubleSpinBox* myMaxSize; SalomeApp_DoubleSpinBox* myMaxSize;
QCheckBox* mySecondOrder; QCheckBox* mySecondOrder;
QCheckBox* myOptimize; QCheckBox* myOptimize;
QComboBox* myFineness; QComboBox* myFineness;
QtxDoubleSpinBox* myGrowthRate; SalomeApp_DoubleSpinBox* myGrowthRate;
QtxDoubleSpinBox* myNbSegPerEdge; SalomeApp_DoubleSpinBox* myNbSegPerEdge;
QtxDoubleSpinBox* myNbSegPerRadius; SalomeApp_DoubleSpinBox* myNbSegPerRadius;
QCheckBox* myAllowQuadrangles; QCheckBox* myAllowQuadrangles;
bool myIs2D; bool myIs2D;