X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FStdMeshersGUI%2FStdMeshersGUI_StdHypothesisCreator.cxx;h=1e5234d6ba4b8295b5f9056e8940a5232c62b895;hp=192a46c1f9cf712fb6c2177ad73831defdff8512;hb=20c126bc220757c06b5576f71ed6f34ae85e3e40;hpb=253807f5b360eb4b76675270840ed53602fa3edb diff --git a/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx b/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx index 192a46c1f..1e5234d6b 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx +++ b/src/StdMeshersGUI/StdMeshersGUI_StdHypothesisCreator.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2012 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 @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -41,6 +42,8 @@ #include +#include + // SALOME GUI includes #include @@ -391,7 +394,8 @@ bool StdMeshersGUI_StdHypothesisCreator::checkParams( QString& msg ) const ok = ( w->IsObjectSelected() ); if ( !ok ) w->SetObject( CORBA::Object::_nil() ); int nbAssocVert = ( hypType() == "ProjectionSource1D" ? 1 : 2 ); - for ( int i = 0; ok && i < nbAssocVert; i += 2) + int nbNonEmptyAssoc = 0; + for ( int i = 0; ok && i < nbAssocVert*2; i += 2) { QString srcV, tgtV; StdMeshersGUI_ObjectReferenceParamWdg* w1 = @@ -406,8 +410,26 @@ bool StdMeshersGUI_StdHypothesisCreator::checkParams( QString& msg ) const w1->SetObject( CORBA::Object::_nil() ); w2->SetObject( CORBA::Object::_nil() ); } + nbNonEmptyAssoc += !srcV.isEmpty(); + } + if ( ok && nbNonEmptyAssoc == 1 && nbAssocVert == 2 ) + { + // only one pair of VERTEXes is given for a FACE, + // then the FACE must have only one VERTEX + GEOM::GEOM_Object_var face = w->GetObject< GEOM::GEOM_Object >(); + + GEOM::GEOM_Gen_var geomGen = SMESH::GetGEOMGen(); + _PTR(Study) aStudy = SMESH::GetActiveStudyDocument(); + GEOM::GEOM_IShapesOperations_wrap shapeOp; + if ( !geomGen->_is_nil() && aStudy ) + shapeOp = geomGen->GetIShapesOperations( aStudy->StudyId() ); + if ( !shapeOp->_is_nil() ) + { + GEOM::ListOfLong_var vertices = + shapeOp->GetAllSubShapesIDs (face, GEOM::VERTEX, /*isSorted=*/false); + ok = ( vertices->length() == 1 ); + } } - // Uninstall filters of StdMeshersGUI_ObjectReferenceParamWdg if ( ok ) deactivateObjRefParamWdg( customWidgets() ); @@ -424,14 +446,7 @@ bool StdMeshersGUI_StdHypothesisCreator::checkParams( QString& msg ) const widget< StdMeshersGUI_LayerDistributionParamWdg >( 0 ); ok = ( w && w->IsOk() ); } - else if ( hypType() == "QuadrangleParams" ) - { - //StdMeshersGUI_SubShapeSelectorWdg* w = - // widget< StdMeshersGUI_SubShapeSelectorWdg >( 0 ); - //ok = ( w->GetListSize() > 0 ); - //StdMeshersGUI_QuadrangleParamWdg* w = - // widget< StdMeshersGUI_QuadrangleParamWdg >( 1 ); - } + return ok; } @@ -453,7 +468,7 @@ QString StdMeshersGUI_StdHypothesisCreator::storeParams() const } QString valueStr = stdParamValues( params ); - QStringList aVariablesList = getVariablesFromDlg(); + //QStringList aVariablesList = getVariablesFromDlg(); if( res && !params.isEmpty() ) { @@ -462,18 +477,18 @@ QString StdMeshersGUI_StdHypothesisCreator::storeParams() const StdMeshers::StdMeshers_LocalLength_var h = StdMeshers::StdMeshers_LocalLength::_narrow( hypothesis() ); + h->SetVarParameter( params[0].text(), "SetLength" ); h->SetLength( params[0].myValue.toDouble() ); - h->SetParameters(aVariablesList.join(":").toLatin1().constData()); + h->SetVarParameter( params[1].text(), "SetPrecision" ); h->SetPrecision( params[1].myValue.toDouble() ); - h->SetParameters(aVariablesList.join(":").toLatin1().constData()); } else if( hypType()=="MaxLength" ) { StdMeshers::StdMeshers_MaxLength_var h = StdMeshers::StdMeshers_MaxLength::_narrow( hypothesis() ); + h->SetVarParameter( params[0].text(), "SetLength" ); h->SetLength( params[0].myValue.toDouble() ); - h->SetParameters(aVariablesList.join(":").toLatin1().constData()); h->SetUsePreestimatedLength( widget< QCheckBox >( 1 )->isChecked() ); if ( !h->HavePreestimatedLength() && !h->_is_equivalent( initParamsHypothesis() )) { StdMeshers::StdMeshers_MaxLength_var hInit = @@ -486,8 +501,8 @@ QString StdMeshersGUI_StdHypothesisCreator::storeParams() const StdMeshers::StdMeshers_SegmentLengthAroundVertex_var h = StdMeshers::StdMeshers_SegmentLengthAroundVertex::_narrow( hypothesis() ); + h->SetVarParameter( params[0].text(), "SetLength" ); h->SetLength( params[0].myValue.toDouble() ); - h->SetParameters(aVariablesList.join(":").toLatin1().constData()); } else if( hypType()=="Arithmetic1D" ) { @@ -497,10 +512,10 @@ QString StdMeshersGUI_StdHypothesisCreator::storeParams() const StdMeshersGUI_SubShapeSelectorWdg* w = widget< StdMeshersGUI_SubShapeSelectorWdg >( 2 ); + h->SetVarParameter( params[0].text(), "SetStartLength" ); h->SetStartLength( params[0].myValue.toDouble() ); - h->SetParameters(aVariablesList.join(":").toLatin1().constData()); + h->SetVarParameter( params[1].text(), "SetEndLength" ); h->SetEndLength( params[1].myValue.toDouble() ); - h->SetParameters(aVariablesList.join(":").toLatin1().constData()); if (w) { h->SetReversedEdges( w->GetListOfIDs() ); h->SetObjectEntry( w->GetMainShapeEntry() ); @@ -518,7 +533,6 @@ QString StdMeshersGUI_StdHypothesisCreator::storeParams() const widget< StdMeshersGUI_SubShapeSelectorWdg >( 1 ); if (w1) { - h->SetParameters(aVariablesList.join(":").toLatin1().constData()); h->SetPoints( w1->GetListOfPoints() ); h->SetNbSegments( w1->GetListOfSegments() ); } @@ -531,7 +545,7 @@ QString StdMeshersGUI_StdHypothesisCreator::storeParams() const { StdMeshers::StdMeshers_MaxElementArea_var h = StdMeshers::StdMeshers_MaxElementArea::_narrow( hypothesis() ); - h->SetParameters(aVariablesList.join(":").toLatin1().constData()); + h->SetVarParameter( params[0].text(), "SetMaxElementArea" ); h->SetMaxElementArea( params[0].myValue.toDouble() ); } else if( hypType()=="MaxElementVolume" ) @@ -539,8 +553,8 @@ QString StdMeshersGUI_StdHypothesisCreator::storeParams() const StdMeshers::StdMeshers_MaxElementVolume_var h = StdMeshers::StdMeshers_MaxElementVolume::_narrow( hypothesis() ); + h->SetVarParameter( params[0].text(), "SetMaxElementVolume" ); h->SetMaxElementVolume( params[0].myValue.toDouble() ); - h->SetParameters(aVariablesList.join(":").toLatin1().constData()); } else if( hypType()=="StartEndLength" ) { @@ -550,10 +564,10 @@ QString StdMeshersGUI_StdHypothesisCreator::storeParams() const StdMeshersGUI_SubShapeSelectorWdg* w = widget< StdMeshersGUI_SubShapeSelectorWdg >( 2 ); + h->SetVarParameter( params[0].text(), "SetStartLength" ); h->SetStartLength( params[0].myValue.toDouble() ); - h->SetParameters(aVariablesList.join(":").toLatin1().constData()); + h->SetVarParameter( params[1].text(), "SetEndLength" ); h->SetEndLength( params[1].myValue.toDouble() ); - h->SetParameters(aVariablesList.join(":").toLatin1().constData()); if (w) { h->SetReversedEdges( w->GetListOfIDs() ); h->SetObjectEntry( w->GetMainShapeEntry() ); @@ -563,7 +577,7 @@ QString StdMeshersGUI_StdHypothesisCreator::storeParams() const { StdMeshers::StdMeshers_Deflection1D_var h = StdMeshers::StdMeshers_Deflection1D::_narrow( hypothesis() ); - h->SetParameters(aVariablesList.join(":").toLatin1().constData()); + h->SetVarParameter( params[0].text(), "SetDeflection" ); h->SetDeflection( params[0].myValue.toDouble() ); } else if( hypType()=="AutomaticLength" ) @@ -571,6 +585,7 @@ QString StdMeshersGUI_StdHypothesisCreator::storeParams() const StdMeshers::StdMeshers_AutomaticLength_var h = StdMeshers::StdMeshers_AutomaticLength::_narrow( hypothesis() ); + h->SetVarParameter( params[0].text(), "SetFineness" ); h->SetFineness( params[0].myValue.toDouble() ); } else if( hypType()=="NumberOfLayers" ) @@ -578,8 +593,8 @@ QString StdMeshersGUI_StdHypothesisCreator::storeParams() const StdMeshers::StdMeshers_NumberOfLayers_var h = StdMeshers::StdMeshers_NumberOfLayers::_narrow( hypothesis() ); + h->SetVarParameter( params[0].text(), "SetNumberOfLayers" ); h->SetNumberOfLayers( params[0].myValue.toInt() ); - h->SetParameters(aVariablesList.join(":").toLatin1().constData()); } else if( hypType()=="LayerDistribution" ) { @@ -589,16 +604,14 @@ QString StdMeshersGUI_StdHypothesisCreator::storeParams() const widget< StdMeshersGUI_LayerDistributionParamWdg >( 0 ); h->SetLayerDistribution( w->GetHypothesis() ); - h->SetParameters(w->GetHypothesis()->GetParameters()); - w->GetHypothesis()->ClearParameters(); } else if( hypType()=="NumberOfLayers2D" ) { StdMeshers::StdMeshers_NumberOfLayers2D_var h = StdMeshers::StdMeshers_NumberOfLayers2D::_narrow( hypothesis() ); + h->SetVarParameter( params[0].text(), "SetNumberOfLayers" ); h->SetNumberOfLayers( params[0].myValue.toInt() ); - h->SetParameters(aVariablesList.join(":").toLatin1().constData()); } else if( hypType()=="LayerDistribution2D" ) { @@ -608,8 +621,6 @@ QString StdMeshersGUI_StdHypothesisCreator::storeParams() const widget< StdMeshersGUI_LayerDistributionParamWdg >( 0 ); h->SetLayerDistribution( w->GetHypothesis() ); - h->SetParameters(w->GetHypothesis()->GetParameters()); - w->GetHypothesis()->ClearParameters(); } else if( hypType()=="ProjectionSource1D" ) { @@ -672,18 +683,35 @@ QString StdMeshersGUI_StdHypothesisCreator::storeParams() const StdMeshers::StdMeshers_ViscousLayers_var h = StdMeshers::StdMeshers_ViscousLayers::_narrow( hypothesis() ); + h->SetVarParameter( params[0].text(), "SetTotalThickness" ); h->SetTotalThickness( params[0].myValue.toDouble() ); - /* */ h->SetParameters(aVariablesList.join(":").toLatin1().constData()); + h->SetVarParameter( params[1].text(), "SetNumberLayers" ); h->SetNumberLayers ( params[1].myValue.toInt() ); - /* */ h->SetParameters(aVariablesList.join(":").toLatin1().constData()); + h->SetVarParameter( params[2].text(), "SetStretchFactor" ); h->SetStretchFactor ( params[2].myValue.toDouble() ); - /* */ h->SetParameters(aVariablesList.join(":").toLatin1().constData()); - + if ( StdMeshersGUI_SubShapeSelectorWdg* idsWg = widget< StdMeshersGUI_SubShapeSelectorWdg >( 3 )) { h->SetIgnoreFaces( idsWg->GetListOfIDs() ); - //h->SetObjectEntry( idsWg->GetMainShapeEntry() ); + } + } + else if( hypType()=="ViscousLayers2D" ) + { + StdMeshers::StdMeshers_ViscousLayers2D_var h = + StdMeshers::StdMeshers_ViscousLayers2D::_narrow( hypothesis() ); + + h->SetVarParameter( params[0].text(), "SetTotalThickness" ); + h->SetTotalThickness( params[0].myValue.toDouble() ); + h->SetVarParameter( params[1].text(), "SetNumberLayers" ); + h->SetNumberLayers ( params[1].myValue.toInt() ); + h->SetVarParameter( params[2].text(), "SetStretchFactor" ); + h->SetStretchFactor ( params[2].myValue.toDouble() ); + + if ( StdMeshersGUI_SubShapeSelectorWdg* idsWg = + widget< StdMeshersGUI_SubShapeSelectorWdg >( 3 )) + { + h->SetIgnoreEdges( idsWg->GetListOfIDs() ); } } else if( hypType()=="QuadrangleParams" ) @@ -710,15 +738,15 @@ QString StdMeshersGUI_StdHypothesisCreator::storeParams() const //================================================================================ /*! * \brief Return parameter values as SMESHGUI_GenericHypothesisCreator::StdParam - * \param p - list of parameters - * \retval bool - success flag - * - * Is called from SMESHGUI_GenericHypothesisCreator::buildStdFrame(). - * Parameters will be shown using "standard" controls: - * Int by QtxIntSpinBox - * Double by SMESHGUI_SpinBox - * String by QLineEdit - * getCustomWidget() allows to redefine control for a parameter + * \param p - list of parameters + * \retval bool - success flag + * + * Is called from SMESHGUI_GenericHypothesisCreator::buildStdFrame(). + * Parameters will be shown using "standard" controls: + * Int by QtxIntSpinBox + * Double by SMESHGUI_SpinBox + * String by QLineEdit + * getCustomWidget() allows to redefine control for a parameter */ //================================================================================ @@ -737,25 +765,24 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const p.append( item ); customWidgets()->append(0); } - + SMESH::SMESH_Hypothesis_var hyp = initParamsHypothesis(); - SMESH::ListOfParameters_var aParameters = hyp->GetLastParameters(); + //SMESH::ListOfParameters_var aParameters = hyp->GetLastParameters(); if( hypType()=="LocalLength" ) { StdMeshers::StdMeshers_LocalLength_var h = StdMeshers::StdMeshers_LocalLength::_narrow( hyp ); - + item.myName = tr("SMESH_LOCAL_LENGTH_PARAM"); - if(!initVariableName(aParameters,item,0)) + if(!initVariableName( hyp, item, "SetLength")) item.myValue = h->GetLength(); p.append( item ); - + item.myName = tr("SMESH_LOCAL_LENGTH_PRECISION"); - if(!initVariableName(aParameters,item,1)) + if(!initVariableName( hyp, item, "SetPrecision")) item.myValue = h->GetPrecision(); p.append( item ); - } else if( hypType()=="MaxLength" ) { @@ -773,7 +800,7 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const } item.myName = tr("SMESH_LOCAL_LENGTH_PARAM"); - if(!initVariableName(aParameters,item,0)) + if(!initVariableName( hyp, item, "SetLength")) item.myValue = h->GetLength(); p.append( item ); customWidgets()->append(0); @@ -797,7 +824,7 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const StdMeshers::StdMeshers_SegmentLengthAroundVertex::_narrow( hyp ); item.myName = tr("SMESH_LOCAL_LENGTH_PARAM"); - if(!initVariableName(aParameters,item,0)) + if(!initVariableName( hyp, item, "SetLength")) item.myValue = h->GetLength(); p.append( item ); @@ -808,14 +835,14 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const StdMeshers::StdMeshers_Arithmetic1D::_narrow( hyp ); item.myName = tr( "SMESH_START_LENGTH_PARAM" ); - if(!initVariableName(aParameters,item,0)) + if(!initVariableName( hyp, item, "SetStartLength" )) item.myValue = h->GetLength( true ); p.append( item ); customWidgets()->append (0); item.myName = tr( "SMESH_END_LENGTH_PARAM" ); - if(!initVariableName(aParameters,item,1)) + if(!initVariableName( hyp, item, "SetEndLength" )) item.myValue = h->GetLength( false ); p.append( item ); @@ -879,7 +906,7 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const StdMeshers::StdMeshers_MaxElementArea::_narrow( hyp ); item.myName = tr( "SMESH_MAX_ELEMENT_AREA_PARAM" ); - if(!initVariableName(aParameters,item,0)) + if(!initVariableName( hyp, item, "SetMaxElementArea" )) item.myValue = h->GetMaxElementArea(); p.append( item ); @@ -890,7 +917,7 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const StdMeshers::StdMeshers_MaxElementVolume::_narrow( hyp ); item.myName = tr( "SMESH_MAX_ELEMENT_VOLUME_PARAM" ); - if(!initVariableName(aParameters,item,0)) + if(!initVariableName( hyp, item, "SetMaxElementVolume" )) item.myValue = h->GetMaxElementVolume(); p.append( item ); } @@ -901,13 +928,13 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const item.myName = tr( "SMESH_START_LENGTH_PARAM" ); - if(!initVariableName(aParameters,item,0)) + if(!initVariableName( hyp, item, "SetStartLength" )) item.myValue = h->GetLength( true ); p.append( item ); customWidgets()->append(0); item.myName = tr( "SMESH_END_LENGTH_PARAM" ); - if(!initVariableName(aParameters,item,1)) + if(!initVariableName( hyp, item, "SetEndLength" )) item.myValue = h->GetLength( false ); p.append( item ); customWidgets()->append(0); @@ -933,7 +960,7 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const StdMeshers::StdMeshers_Deflection1D::_narrow( hyp ); item.myName = tr( "SMESH_DEFLECTION1D_PARAM" ); - if(!initVariableName(aParameters,item,0)) + if(!initVariableName( hyp, item, "SetDeflection" )) item.myValue = h->GetDeflection(); p.append( item ); } @@ -956,50 +983,37 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const StdMeshers::StdMeshers_NumberOfLayers::_narrow( hyp ); item.myName = tr( "SMESH_NUMBER_OF_LAYERS" ); - if(!initVariableName(aParameters,item,0)) + if(!initVariableName( hyp, item, "SetNumberOfLayers" )) item.myValue = (int) h->GetNumberOfLayers(); p.append( item ); } - else if( hypType()=="LayerDistribution" ) { + else if( hypType()=="LayerDistribution" ) + { StdMeshers::StdMeshers_LayerDistribution_var h = StdMeshers::StdMeshers_LayerDistribution::_narrow( hyp ); item.myName = tr( "SMESH_LAYERS_DISTRIBUTION" ); p.append( item ); - - //Set into not published hypo last variables - QStringList aLastVarsList; - for(int i = 0;ilength();i++) - aLastVarsList.append(QString(aParameters[i].in())); - - if(!aLastVarsList.isEmpty()) - h->GetLayerDistribution()->SetLastParameters(aLastVarsList.join(":").toLatin1().constData()); - + initVariableName( hyp, item, "SetLayerDistribution" ); customWidgets()->append ( new StdMeshersGUI_LayerDistributionParamWdg( h->GetLayerDistribution(), hypName(), dlg())); } - else if( hypType()=="NumberOfLayers2D" ) { + else if( hypType()=="NumberOfLayers2D" ) + { StdMeshers::StdMeshers_NumberOfLayers2D_var h = StdMeshers::StdMeshers_NumberOfLayers2D::_narrow( hyp ); item.myName = tr( "SMESH_NUMBER_OF_LAYERS" ); - if(!initVariableName(aParameters,item,0)) + if(!initVariableName( hyp, item, "SetNumberOfLayers" )) item.myValue = (int) h->GetNumberOfLayers(); p.append( item ); } - else if( hypType()=="LayerDistribution2D" ) { + else if( hypType()=="LayerDistribution2D" ) + { StdMeshers::StdMeshers_LayerDistribution2D_var h = StdMeshers::StdMeshers_LayerDistribution2D::_narrow( hyp ); item.myName = tr( "SMESH_LAYERS_DISTRIBUTION" ); p.append( item ); - - //Set into not published hypo last variables - QStringList aLastVarsList; - for(int i = 0;ilength();i++) - aLastVarsList.append(QString(aParameters[i].in())); - - if(!aLastVarsList.isEmpty()) - h->GetLayerDistribution()->SetLastParameters(aLastVarsList.join(":").toLatin1().constData()); - + initVariableName( hyp, item, "SetLayerDistribution" ); customWidgets()->append ( new StdMeshersGUI_LayerDistributionParamWdg( h->GetLayerDistribution(), hypName(), dlg())); } @@ -1012,7 +1026,7 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const customWidgets()->append( newObjRefParamWdg( filterForShapeOfDim( 1 ), h->GetSourceEdge())); item.myName = tr( "SMESH_SOURCE_MESH" ); p.append( item ); - customWidgets()->append( newObjRefParamWdg( new SMESH_TypeFilter( MESH ), + customWidgets()->append( newObjRefParamWdg( new SMESH_TypeFilter( SMESH::MESH ), h->GetSourceMesh())); item.myName = tr( "SMESH_SOURCE_VERTEX" ); p.append( item ); customWidgets()->append( newObjRefParamWdg( filterForShapeOfDim( 0 ), @@ -1030,7 +1044,7 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const customWidgets()->append( newObjRefParamWdg( filterForShapeOfDim( 2 ), h->GetSourceFace())); item.myName = tr( "SMESH_SOURCE_MESH" ); p.append( item ); - customWidgets()->append( newObjRefParamWdg( new SMESH_TypeFilter( MESH ), + customWidgets()->append( newObjRefParamWdg( new SMESH_TypeFilter( SMESH::MESH ), h->GetSourceMesh())); item.myName = tr( "SMESH_SOURCE_VERTEX1" ); p.append( item ); customWidgets()->append( newObjRefParamWdg( filterForShapeOfDim( 0 ), @@ -1054,7 +1068,7 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const customWidgets()->append( newObjRefParamWdg( filterForShapeOfDim( 3, TopAbs_FACE, 6, true ), h->GetSource3DShape())); item.myName = tr( "SMESH_SOURCE_MESH" ); p.append( item ); - customWidgets()->append( newObjRefParamWdg( new SMESH_TypeFilter( MESH ), + customWidgets()->append( newObjRefParamWdg( new SMESH_TypeFilter( SMESH::MESH ), h->GetSourceMesh())); item.myName = tr( "SMESH_SOURCE_VERTEX1" ); p.append( item ); customWidgets()->append( newObjRefParamWdg( filterForShapeOfDim( 0 ), @@ -1079,7 +1093,7 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const h->GetCopySourceMesh(toCopyMesh, toCopyGroups); item.myName = tr( "SMESH_SOURCE_EDGES" ); p.append( item ); - customWidgets()->append( newObjRefParamWdg( new SMESH_TypeFilter( GROUP_EDGE ), + customWidgets()->append( newObjRefParamWdg( new SMESH_TypeFilter( SMESH::GROUP_EDGE ), groupEntries)); item.myName = tr( "SMESH_COPY_MESH" ); p.append( item ); @@ -1104,7 +1118,7 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const h->GetCopySourceMesh(toCopyMesh, toCopyGroups); item.myName = tr( "SMESH_SOURCE_FACES" ); p.append( item ); - customWidgets()->append( newObjRefParamWdg( new SMESH_TypeFilter( GROUP_FACE ), + customWidgets()->append( newObjRefParamWdg( new SMESH_TypeFilter( SMESH::GROUP_FACE ), groupEntries)); item.myName = tr( "SMESH_COPY_MESH" ); p.append( item ); @@ -1125,19 +1139,19 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const StdMeshers::StdMeshers_ViscousLayers::_narrow( hyp ); item.myName = tr( "SMESH_TOTAL_THICKNESS" ); - if(!initVariableName(aParameters,item,0)) + if(!initVariableName( hyp, item, "SetTotalThickness" )) item.myValue = h->GetTotalThickness(); p.append( item ); customWidgets()->append (0); item.myName = tr( "SMESH_NUMBER_OF_LAYERS" ); - if(!initVariableName(aParameters,item,1)) + if(!initVariableName( hyp, item, "SetNumberLayers" )) item.myValue = h->GetNumberLayers(); p.append( item ); customWidgets()->append (0); item.myName = tr( "SMESH_STRETCH_FACTOR" ); - if(!initVariableName(aParameters,item,2)) + if(!initVariableName( hyp, item, "SetStretchFactor" )) item.myValue = h->GetStretchFactor(); p.append( item ); customWidgets()->append (0); @@ -1158,6 +1172,45 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const customWidgets()->append ( idsWg ); } } + else if( hypType()=="ViscousLayers2D" ) + { + StdMeshers::StdMeshers_ViscousLayers2D_var h = + StdMeshers::StdMeshers_ViscousLayers2D::_narrow( hyp ); + + item.myName = tr( "SMESH_TOTAL_THICKNESS" ); + if(!initVariableName( hyp, item, "SetTotalThickness" )) + item.myValue = h->GetTotalThickness(); + p.append( item ); + customWidgets()->append (0); + + item.myName = tr( "SMESH_NUMBER_OF_LAYERS" ); + if(!initVariableName( hyp, item, "SetNumberLayers" )) + item.myValue = h->GetNumberLayers(); + p.append( item ); + customWidgets()->append (0); + + item.myName = tr( "SMESH_STRETCH_FACTOR" ); + if(!initVariableName( hyp, item, "SetStretchFactor" )) + item.myValue = h->GetStretchFactor(); + p.append( item ); + customWidgets()->append (0); + + QString aMainEntry = SMESHGUI_GenericHypothesisCreator::getMainShapeEntry(); + if ( !aMainEntry.isEmpty() ) + { + item.myName = tr( "SMESH_EDGES_WO_LAYERS" ); + p.append( item ); + + StdMeshersGUI_SubShapeSelectorWdg* idsWg = + new StdMeshersGUI_SubShapeSelectorWdg(0,TopAbs_EDGE); + + idsWg->SetGeomShapeEntry( aMainEntry ); + idsWg->SetMainShapeEntry( aMainEntry ); + idsWg->SetListOfIDs( h->GetIgnoreEdges() ); + idsWg->showPreview( true ); + customWidgets()->append ( idsWg ); + } + } else if (hypType() == "QuadrangleParams") { StdMeshers::StdMeshers_QuadrangleParams_var h = @@ -1248,7 +1301,7 @@ void StdMeshersGUI_StdHypothesisCreator::attuneStdWidget (QWidget* w, const int) { sb->RangeStepAndValidator( VALUE_SMALL, VALUE_MAX, 1.0, "parametric_precision" ); } - else if( hypType()=="ViscousLayers" ) + else if( hypType().startsWith( "ViscousLayers" )) { if (sb->objectName() == tr("SMESH_STRETCH_FACTOR")) sb->RangeStepAndValidator( 1.0, VALUE_MAX, 0.1, "parametric_precision" ); @@ -1260,12 +1313,6 @@ void StdMeshersGUI_StdHypothesisCreator::attuneStdWidget (QWidget* w, const int) sb->RangeStepAndValidator( VALUE_SMALL, VALUE_MAX, 1.0, "length_precision" ); } } -// else if ( QtxIntSpinBox* ib = w->inherits( "QtxIntSpinBox" ) ? ( QtxIntSpinBox* )w : 0) -// { -// if( hypType()=="ViscousLayers" ) -// { -// } -// } } //================================================================================ @@ -1340,6 +1387,7 @@ QString StdMeshersGUI_StdHypothesisCreator::hypTypeName( const QString& t ) cons types.insert( "SegmentLengthAroundVertex", "SEGMENT_LENGTH_AROUND_VERTEX" ); types.insert( "MaxLength", "MAX_LENGTH" ); types.insert( "ViscousLayers", "VISCOUS_LAYERS" ); + types.insert( "ViscousLayers2D", "VISCOUS_LAYERS" ); types.insert( "QuadrangleParams", "QUADRANGLE_PARAMS" ); types.insert( "CartesianParameters3D", "CARTESIAN_PARAMS" ); } @@ -1499,13 +1547,13 @@ void StdMeshersGUI_StdHypothesisCreator::valueChanged( QWidget* paramWidget) */ //================================================================================ -bool StdMeshersGUI_StdHypothesisCreator::initVariableName(SMESH::ListOfParameters_var theParameters, - StdParam &theParams, - int order) const +bool StdMeshersGUI_StdHypothesisCreator::initVariableName(SMESH::SMESH_Hypothesis_var theHyp, + StdParam & theParams, + const char* theMethod) const { - QString aVaribaleName = (theParameters->length() > order) ? QString(theParameters[order].in()) : QString(""); + QString aVaribaleName = getVariableName( theMethod ); theParams.isVariable = !aVaribaleName.isEmpty(); - if(theParams.isVariable) + if (theParams.isVariable) theParams.myValue = aVaribaleName; return theParams.isVariable;