X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGUI%2FNETGENPluginGUI_HypothesisCreator.cxx;h=4eb34023d0c32fdec661f9b1bd6866a699faf298;hb=bc0818fc4c602b9fc07da44394126e47d3611163;hp=7a0a094b27613b61f9ddeb9daae83b0b03e2d6c5;hpb=fbceed67d3744002f1e438129b3b3183dd6ac861;p=plugins%2Fnetgenplugin.git diff --git a/src/GUI/NETGENPluginGUI_HypothesisCreator.cxx b/src/GUI/NETGENPluginGUI_HypothesisCreator.cxx old mode 100644 new mode 100755 index 7a0a094..4eb3402 --- a/src/GUI/NETGENPluginGUI_HypothesisCreator.cxx +++ b/src/GUI/NETGENPluginGUI_HypothesisCreator.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2014 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 @@ -89,7 +89,7 @@ NETGENPluginGUI_HypothesisCreator::NETGENPluginGUI_HypothesisCreator( const QStr { myGeomSelectionTools = NULL; myLocalSizeMap.clear(); - myIs2D = ( theHypType.startsWith("NETGEN_Parameters_2D")); + myIs2D = ( theHypType.startsWith("NETGEN_Parameters_2D")); myIsONLY = ( theHypType == "NETGEN_Parameters_2D_ONLY" || theHypType == "NETGEN_Parameters_3D"); } @@ -166,7 +166,7 @@ QFrame* NETGENPluginGUI_HypothesisCreator::buildFrame() if ( !myIsONLY ) { mySecondOrder = new QCheckBox( tr( "NETGEN_SECOND_ORDER" ), GroupC1 ); - aGroupLayout->addWidget( mySecondOrder, row, 0 ); + aGroupLayout->addWidget( mySecondOrder, row, 0, 1, 2 ); row++; } @@ -177,6 +177,7 @@ QFrame* NETGENPluginGUI_HypothesisCreator::buildFrame() tr( "NETGEN_FINE" ) << tr( "NETGEN_VERYFINE" ) << tr( "NETGEN_CUSTOM" ); myFineness->addItems( types ); aGroupLayout->addWidget( myFineness, row, 1 ); + connect( myFineness, SIGNAL( activated( int ) ), this, SLOT( onFinenessChanged() ) ); row++; aGroupLayout->addWidget( new QLabel( tr( "NETGEN_GROWTH_RATE" ), GroupC1 ), row, 0 ); @@ -203,19 +204,35 @@ QFrame* NETGENPluginGUI_HypothesisCreator::buildFrame() aGroupLayout->addWidget( myNbSegPerRadius, row, 1 ); row++; } + + mySurfaceCurvature = 0; + if ( myIs2D || !myIsONLY ) + { + mySurfaceCurvature = new QCheckBox( tr( "NETGEN_SURFACE_CURVATURE" ), GroupC1 ); + aGroupLayout->addWidget( mySurfaceCurvature, row, 0, 1, 2 ); + connect( mySurfaceCurvature, SIGNAL( stateChanged( int ) ), this, SLOT( onSurfaceCurvatureChanged() ) ); + row++; + } + myAllowQuadrangles = 0; - if ( myIs2D || !myIsONLY ) // issue 0021676 + if ( myIs2D || !myIsONLY ) // disable only for NETGEN 3D { myAllowQuadrangles = new QCheckBox( tr( "NETGEN_ALLOW_QUADRANGLES" ), GroupC1 ); - aGroupLayout->addWidget( myAllowQuadrangles, row, 0 ); + aGroupLayout->addWidget( myAllowQuadrangles, row, 0, 1, 2 ); row++; } myOptimize = new QCheckBox( tr( "NETGEN_OPTIMIZE" ), GroupC1 ); - aGroupLayout->addWidget( myOptimize, row, 0 ); + aGroupLayout->addWidget( myOptimize, row, 0, 1, 2 ); row++; - connect( myFineness, SIGNAL( activated( int ) ), this, SLOT( onFinenessChanged() ) ); + myFuseEdges = 0; + if (!myIsONLY) + { + myFuseEdges = new QCheckBox( tr( "NETGEN_FUSE_EDGES" ), GroupC1 ); + aGroupLayout->addWidget( myFuseEdges, row, 0, 1, 2 ); + row++; + } myLocalSizeTable = 0; if ( !myIsONLY ) @@ -306,13 +323,14 @@ void NETGENPluginGUI_HypothesisCreator::retrieveParams() const if (myAllowQuadrangles) myAllowQuadrangles->setChecked( data.myAllowQuadrangles ); + if (mySurfaceCurvature) + mySurfaceCurvature->setChecked( data.mySurfaceCurvature ); + + if (myFuseEdges) + myFuseEdges->setChecked( data.myFuseEdges ); + // update widgets - bool isCustom = (myFineness->currentIndex() == UserDefined); - myGrowthRate->setEnabled(isCustom); - if ( myNbSegPerEdge ) - myNbSegPerEdge->setEnabled(isCustom); - if ( myNbSegPerRadius ) - myNbSegPerRadius->setEnabled(isCustom); + ((NETGENPluginGUI_HypothesisCreator*) this )-> onSurfaceCurvatureChanged(); if ( myLocalSizeTable ) { @@ -357,6 +375,12 @@ QString NETGENPluginGUI_HypothesisCreator::storeParams() const if ( myIs2D && data.myAllowQuadrangles ) valStr += "; " + tr("NETGEN_ALLOW_QUADRANGLES"); + if ( data.mySurfaceCurvature ) + valStr += "; " + tr("NETGEN_SURFACE_CURVATURE"); + + if ( data.myFuseEdges ) + valStr += "; " + tr("NETGEN_FUSE_EDGES"); + return valStr; } @@ -382,6 +406,8 @@ bool NETGENPluginGUI_HypothesisCreator::readParamsFromHypo( NetgenHypothesisData h_data.myNbSegPerRadiusVar = getVariableName("SetNbSegPerRadius"); h_data.myMinSize = h->GetMinSize(); h_data.myMinSizeVar = getVariableName("SetMinSize"); + h_data.mySurfaceCurvature = h->GetUseSurfaceCurvature(); + h_data.myFuseEdges = h->GetFuseEdges(); //if ( myIs2D ) { @@ -425,31 +451,34 @@ bool NETGENPluginGUI_HypothesisCreator::storeParamsToHypo( const NetgenHypothesi if( isCreation() ) SMESH::SetName( SMESH::FindSObject( h ), h_data.myName.toLatin1().data() ); h->SetVarParameter( h_data.myMaxSizeVar.toLatin1().constData(), "SetMaxSize"); - h->SetMaxSize( h_data.myMaxSize ); - h->SetSecondOrder( h_data.mySecondOrder ); - h->SetOptimize( h_data.myOptimize ); + h->SetMaxSize ( h_data.myMaxSize ); + h->SetSecondOrder ( h_data.mySecondOrder ); + h->SetOptimize ( h_data.myOptimize ); int fineness = h_data.myFineness; - h->SetFineness( fineness ); + h->SetFineness ( fineness ); if( fineness==UserDefined ) { - h->SetVarParameter( h_data.myGrowthRateVar.toLatin1().constData(), "SetGrowthRate"); - h->SetGrowthRate( h_data.myGrowthRate ); - h->SetVarParameter( h_data.myNbSegPerEdgeVar.toLatin1().constData(), "SetNbSegPerEdge"); - h->SetNbSegPerEdge( h_data.myNbSegPerEdge ); - h->SetVarParameter( h_data.myNbSegPerRadiusVar.toLatin1().constData(), "SetNbSegPerRadius"); + h->SetVarParameter ( h_data.myGrowthRateVar.toLatin1().constData(), "SetGrowthRate"); + h->SetGrowthRate ( h_data.myGrowthRate ); + h->SetVarParameter ( h_data.myNbSegPerEdgeVar.toLatin1().constData(), "SetNbSegPerEdge"); + h->SetNbSegPerEdge ( h_data.myNbSegPerEdge ); + h->SetVarParameter ( h_data.myNbSegPerRadiusVar.toLatin1().constData(), "SetNbSegPerRadius"); h->SetNbSegPerRadius( h_data.myNbSegPerRadius ); } - h->SetVarParameter( h_data.myMinSizeVar.toLatin1().constData(), "SetMinSize"); - h->SetMinSize( h_data.myMinSize ); + h->SetVarParameter ( h_data.myMinSizeVar.toLatin1().constData(), "SetMinSize"); + h->SetMinSize ( h_data.myMinSize ); + h->SetUseSurfaceCurvature( h_data.mySurfaceCurvature ); + h->SetFuseEdges ( h_data.myFuseEdges ); - if ( myIs2D ) + //if ( myIs2D ) { - NETGENPlugin::NETGENPlugin_Hypothesis_2D_var h_2d = - NETGENPlugin::NETGENPlugin_Hypothesis_2D::_narrow( h ); + // NETGENPlugin::NETGENPlugin_Hypothesis_2D_var h_2d = + // NETGENPlugin::NETGENPlugin_Hypothesis_2D::_narrow( h ); - if ( !h_2d->_is_nil() ) - h_2d->SetQuadAllowed( h_data.myAllowQuadrangles ); + // if ( !h_2d->_is_nil() ) + // h_2d->SetQuadAllowed( h_data.myAllowQuadrangles ); + h->SetQuadAllowed( h_data.myAllowQuadrangles ); } QMapIterator i(myLocalSizeMap); @@ -506,6 +535,12 @@ bool NETGENPluginGUI_HypothesisCreator::readParamsFromWidgets( NetgenHypothesisD if ( myAllowQuadrangles ) h_data.myAllowQuadrangles = myAllowQuadrangles->isChecked(); + if ( mySurfaceCurvature ) + h_data.mySurfaceCurvature = mySurfaceCurvature->isChecked(); + + if ( myFuseEdges ) + h_data.myFuseEdges = myFuseEdges->isChecked(); + if ( myLocalSizeTable ) { NETGENPluginGUI_HypothesisCreator* that = (NETGENPluginGUI_HypothesisCreator*)this; @@ -520,6 +555,18 @@ bool NETGENPluginGUI_HypothesisCreator::readParamsFromWidgets( NetgenHypothesisD return true; } +void NETGENPluginGUI_HypothesisCreator::onSurfaceCurvatureChanged() +{ + bool isSurfaceCurvature = (mySurfaceCurvature ? mySurfaceCurvature->isChecked() : true); + bool isCustom = (myFineness->currentIndex() == UserDefined); + myFineness->setEnabled(isSurfaceCurvature); + myGrowthRate->setEnabled(isCustom); + if ( myNbSegPerEdge ) + myNbSegPerEdge->setEnabled(isCustom && isSurfaceCurvature); + if ( myNbSegPerRadius ) + myNbSegPerRadius->setEnabled(isCustom && isSurfaceCurvature); +} + void NETGENPluginGUI_HypothesisCreator::onFinenessChanged() { bool isCustom = (myFineness->currentIndex() == UserDefined);