From d992d85973a627445c091bd3f6df766b4990b282 Mon Sep 17 00:00:00 2001 From: eap Date: Wed, 16 Mar 2011 15:41:27 +0000 Subject: [PATCH] 0020978: EDF 1475 SMESH: Convert linear to quadratic on a submesh --- doc/salome/gui/SMESH/images/convert.png | Bin 11849 -> 13963 bytes .../input/convert_to_from_quadratic_mesh.doc | 23 +++- .../gui/SMESH/input/tui_modifying_meshes.doc | 7 + src/SMESHGUI/SMESHGUI.cxx | 4 +- src/SMESHGUI/SMESHGUI_ConvToQuadDlg.cxx | 23 +++- src/SMESHGUI/SMESHGUI_ConvToQuadDlg.h | 4 + src/SMESHGUI/SMESHGUI_ConvToQuadOp.cxx | 128 +++++++++++------- src/SMESHGUI/SMESHGUI_ConvToQuadOp.h | 2 +- src/SMESHGUI/SMESH_msg_en.ts | 6 +- 9 files changed, 137 insertions(+), 60 deletions(-) diff --git a/doc/salome/gui/SMESH/images/convert.png b/doc/salome/gui/SMESH/images/convert.png index 4a71cac99697cf6c4437a115396bf008b6b69906..2ebbedc3a08524912321224a89967f2501b3859f 100644 GIT binary patch literal 13963 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 literal 11849 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 produce a conversion:
    +
  1. Select a mesh or a sub-mesh in the Object Browser or in the +Viewer.
  2. From the Modification menu choose the Convert to/from Quadratic Mesh item, or click "Convert to/from quadratic" button in the toolbar. @@ -20,11 +26,18 @@ The following dialog box will appear: \image html convert.png
  3. -
  4. In this dialog box you should select: +
  5. In this dialog box you should specify:
      -
    • if you wish to convert standard mesh to quadratic or quadratic to standard;
    • -
    • if you wish to place medium nodes of the quadratic mesh on the geometry (meshed object).
    • +
    • if you wish to convert a standard mesh to quadratic or a quadratic +mesh to standard. Note that the choice is available only if the selected mesh +(or sub-mesh) contains both quadratic and linear elements, else the +sole direction of convertion is automatically selected.
    • + +
    • if you wish to place medium nodes of the quadratic mesh on the +geometry (meshed object). This option is active at convertion to +qudratic mesh only and provided that the mesh is based on some +geometry (not imported from the file).
    \image html image156.gif diff --git a/doc/salome/gui/SMESH/input/tui_modifying_meshes.doc b/doc/salome/gui/SMESH/input/tui_modifying_meshes.doc index fe0da8e61..1dd65bfa1 100644 --- a/doc/salome/gui/SMESH/input/tui_modifying_meshes.doc +++ b/doc/salome/gui/SMESH/input/tui_modifying_meshes.doc @@ -959,6 +959,13 @@ Mesh.ConvertFromQuadratic() Mesh.ConvertToQuadratic( theForce3d=0 ) +# to convert not the whole mesh but a sub-mesh, provide it as +# an additional argument to the functions: +# Mesh.ConvertToQuadratic( 0, subMesh ) +# Mesh.ConvertFromQuadratic( subMesh ) +# +# Note that the mesh becomes non-conformal at conversion of sub-mesh. + \endcode */ diff --git a/src/SMESHGUI/SMESHGUI.cxx b/src/SMESHGUI/SMESHGUI.cxx index 7cd7de1ec..18e7669cb 100644 --- a/src/SMESHGUI/SMESHGUI.cxx +++ b/src/SMESHGUI/SMESHGUI.cxx @@ -3778,8 +3778,8 @@ void SMESHGUI::initialize( CAM_Application* app ) popupMgr()->insert( separator(), -1, 0 ); createPopupItem( 4043, OB, mesh ); // CLEAR_MESH popupMgr()->insert( separator(), -1, 0 ); - createPopupItem( 417, OB, mesh/*, "&& " + hasElems*/); // convert to quadratic - createPopupItem( 418, OB, mesh/*, "&& " + hasVolumes*/); // create 2D mesh on 3D + createPopupItem( 417, OB, mesh + " " + subMesh ); // convert to quadratic + createPopupItem( 418, OB, mesh/*, "&& " + hasVolumes*/); // create 2D mesh on 3D popupMgr()->insert( separator(), -1, 0 ); QString only_one_non_empty = QString( " && %1=1 && numberOfNodes>0" ).arg( dc ); diff --git a/src/SMESHGUI/SMESHGUI_ConvToQuadDlg.cxx b/src/SMESHGUI/SMESHGUI_ConvToQuadDlg.cxx index 684a561b5..161a5f696 100644 --- a/src/SMESHGUI/SMESHGUI_ConvToQuadDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_ConvToQuadDlg.cxx @@ -36,6 +36,7 @@ #include #include #include +#include #define SPACING 6 #define MARGIN 11 @@ -70,6 +71,8 @@ SMESHGUI_ConvToQuadDlg::SMESHGUI_ConvToQuadDlg() myBG->addButton(myRB2, 1); myRB1->setChecked( true ); + myWarning = new QLabel(QString("%1").arg(tr("NON_CONFORM_WARNING")), mainFrame()); + // Fill layout QGridLayout* aLay = new QGridLayout( mainFrame() ); aLay->setMargin( 5 ); @@ -80,6 +83,7 @@ SMESHGUI_ConvToQuadDlg::SMESHGUI_ConvToQuadDlg() aLay->addWidget( objectWg( 0, Control ), 0, 2 ); aLay->addWidget( myMedNdsOnGeom, 1, 0, 1, 3 ); aLay->addWidget( myBGBox, 2, 0, 1, 3 ); + aLay->addWidget( myWarning, 3, 0, 1, 3 ); connect(myBG, SIGNAL( buttonClicked( int ) ), this, SIGNAL( onClicked( int ) ) ); } @@ -113,11 +117,26 @@ int SMESHGUI_ConvToQuadDlg::CurrentRB( ) return myBG->checkedId(); } +void SMESHGUI_ConvToQuadDlg::ShowWarning(bool toShow) +{ + if ( toShow ) + myWarning->show(); + else + myWarning->hide(); +} + +bool SMESHGUI_ConvToQuadDlg::isWarningShown() +{ + return myWarning->isVisible(); +} + void SMESHGUI_ConvToQuadDlg::SetEnabledControls( const bool theCheck ) { - myBGBox->setEnabled( theCheck ); + //myBGBox->setEnabled( theCheck ); + myRB1->setEnabled( theCheck ); + myRB2->setEnabled( theCheck ); myMedNdsOnGeom->setEnabled( theCheck ); - setButtonEnabled( theCheck, QtxDialog::OK | QtxDialog::Apply ); + //setButtonEnabled( theCheck, QtxDialog::OK | QtxDialog::Apply ); } void SMESHGUI_ConvToQuadDlg::SetEnabledRB( const int idx, const bool theCheck ) diff --git a/src/SMESHGUI/SMESHGUI_ConvToQuadDlg.h b/src/SMESHGUI/SMESHGUI_ConvToQuadDlg.h index 59099246d..9c46953f5 100644 --- a/src/SMESHGUI/SMESHGUI_ConvToQuadDlg.h +++ b/src/SMESHGUI/SMESHGUI_ConvToQuadDlg.h @@ -36,6 +36,7 @@ class QCheckBox; class QRadioButton; class QButtonGroup; class QGroupBox; +class QLabel; class SMESHGUI_EXPORT SMESHGUI_ConvToQuadDlg : public SMESHGUI_Dialog { @@ -53,6 +54,8 @@ public: void SetEnabledControls( const bool ); void SetEnabledRB( const int, const bool ); int CurrentRB(); //returns the ID of the selected toggle button + void ShowWarning(bool); + bool isWarningShown(); signals: void onClicked( int ); @@ -63,6 +66,7 @@ private: QButtonGroup* myBG; QRadioButton* myRB1; QRadioButton* myRB2; + QLabel* myWarning; }; #endif // SMESHGUI_CONVTOQUADDLG_H diff --git a/src/SMESHGUI/SMESHGUI_ConvToQuadOp.cxx b/src/SMESHGUI/SMESHGUI_ConvToQuadOp.cxx index 5b8777753..d9cf28486 100644 --- a/src/SMESHGUI/SMESHGUI_ConvToQuadOp.cxx +++ b/src/SMESHGUI/SMESHGUI_ConvToQuadOp.cxx @@ -30,8 +30,9 @@ #include "SMESHGUI.h" #include "SMESHGUI_ConvToQuadDlg.h" #include "SMESHGUI_Utils.h" +#include "SMDSAbs_ElementType.hxx" -#include +#include "SMESH_TypeFilter.hxx" // SALOME GUI includes #include @@ -100,6 +101,7 @@ void SMESHGUI_ConvToQuadOp::startOperation() myDlg->SetMediumNdsOnGeom( false ); myDlg->activateObject( 0 ); + myDlg->ShowWarning( false ); myDlg->show(); selectionDone(); @@ -120,22 +122,26 @@ void SMESHGUI_ConvToQuadOp::selectionDone() SMESHGUI_SelectionOp::selectionDone(); try { - QString anMeshEntry = myDlg->selectedObject( 0 ); - _PTR(SObject) pMesh = studyDS()->FindObjectID( anMeshEntry.toLatin1().data() ); - if ( !pMesh ) return; + QString anObjEntry = myDlg->selectedObject( 0 ); + _PTR(SObject) pObj = studyDS()->FindObjectID( anObjEntry.toLatin1().data() ); + if ( !pObj ) return; - SMESH::SMESH_Mesh_var mesh = - SMESH::SObjectToInterface( pMesh ); + SMESH::SMESH_IDSource_var idSource = + SMESH::SObjectToInterface( pObj ); - if( mesh->_is_nil() ) + myDlg->setButtonEnabled( true, QtxDialog::OK | QtxDialog::Apply ); + if( idSource->_is_nil() ) { myDlg->SetEnabledControls( false ); + myDlg->setButtonEnabled( false, QtxDialog::OK | QtxDialog::Apply ); + return; } - else if( ConsistMesh( mesh ) == SMESHGUI_ConvToQuadOp::Quadratic ) + MeshType meshType = ConsistMesh( idSource ); + if( meshType == SMESHGUI_ConvToQuadOp::Quadratic ) { myDlg->SetEnabledRB( 0, false ); } - else if( ConsistMesh( mesh ) == SMESHGUI_ConvToQuadOp::Linear ) + else if( meshType == SMESHGUI_ConvToQuadOp::Linear ) { myDlg->SetEnabledRB( 1, false ); } @@ -143,6 +149,22 @@ void SMESHGUI_ConvToQuadOp::selectionDone() { myDlg->SetEnabledControls( true ); } + + // show warning on non-conformal result mesh + if ( ! idSource->_is_nil() ) + { + SMESH::SMESH_subMesh_var subMesh = + SMESH::SObjectToInterface( pObj ); + bool toShow = false; + if ( !subMesh->_is_nil() ) + { + SMESH::SMESH_Mesh_var mesh = idSource->GetMesh(); + idSource = SMESH::SMESH_IDSource::_narrow( mesh ); + MeshType fullMeshType = ConsistMesh( idSource ); + toShow = ( fullMeshType != Comp ); + } + myDlg->ShowWarning( toShow ); + } } catch ( const SALOME::SALOME_Exception& S_ex ) { @@ -165,7 +187,7 @@ void SMESHGUI_ConvToQuadOp::selectionDone() SUIT_SelectionFilter* SMESHGUI_ConvToQuadOp::createFilter( const int theId ) const { if ( theId == 0 ) - return new SMESH_TypeFilter( MESH ); + return new SMESH_TypeFilter( MESHorSUBMESH ); else return 0; } @@ -183,45 +205,52 @@ bool SMESHGUI_ConvToQuadOp::onApply() QString aMess; - QString anMeshEntry = myDlg->selectedObject( 0 ); - _PTR(SObject) pMesh = studyDS()->FindObjectID( anMeshEntry.toLatin1().data() ); - if ( !pMesh ) + QString anObjEntry = myDlg->selectedObject( 0 ); + _PTR(SObject) pObj = studyDS()->FindObjectID( anObjEntry.toLatin1().data() ); + if ( !pObj ) { dlg()->show(); SUIT_MessageBox::warning( myDlg, tr( "SMESH_WRN_WARNING" ), tr("MESH_IS_NOT_SELECTED") ); - return false; } - SMESH::SMESH_Mesh_var mesh = - SMESH::SObjectToInterface( pMesh ); + SMESH::SMESH_Mesh_var mesh; + SMESH::SMESH_IDSource_var idSource = + SMESH::SObjectToInterface( pObj ); + if( !CORBA::is_nil(idSource) ) + mesh = idSource->GetMesh(); if( CORBA::is_nil(mesh) ) { SUIT_MessageBox::warning( myDlg, tr( "SMESH_WRN_WARNING" ), tr("REF_IS_NULL") ); - return false; - } + } bool aResult = false; try { SMESH::SMESH_MeshEditor_var aEditor = mesh->GetMeshEditor(); + aResult = true; if( !myDlg->CurrentRB() ) { bool aParam = true; if( myDlg->IsEnabledCheck() ) aParam = myDlg->IsMediumNdsOnGeom(); - aEditor->ConvertToQuadratic( aParam ); - aResult = true; + if ( myDlg->isWarningShown() ) + aEditor->ConvertToQuadraticObject( aParam, idSource ); + else + aEditor->ConvertToQuadratic( aParam ); } else { - aResult = aEditor->ConvertFromQuadratic(); + if ( myDlg->isWarningShown() ) + aEditor->ConvertFromQuadraticObject( idSource ); + else + aEditor->ConvertFromQuadratic(); } } catch ( const SALOME::SALOME_Exception& S_ex ) @@ -247,42 +276,43 @@ bool SMESHGUI_ConvToQuadOp::onApply() * Determines, what elements this mesh contains. */ //================================================================================ -SMESHGUI_ConvToQuadOp::MeshType SMESHGUI_ConvToQuadOp::ConsistMesh( const SMESH::SMESH_Mesh_var& mesh) const +SMESHGUI_ConvToQuadOp::MeshType SMESHGUI_ConvToQuadOp::ConsistMesh( const SMESH::SMESH_IDSource_var& idSource) const { - int nbAllElem = 0, nbQEdges =0, nbQFaces =0, nbQVolum = 0; - int nbEdges = 0, nbFaces = 0, nbVolum = 0; - - nbAllElem = (int)mesh->NbElements(); - nbQEdges = (int)mesh->NbEdgesOfOrder(SMESH::ORDER_QUADRATIC); - nbQFaces = (int)mesh->NbFacesOfOrder(SMESH::ORDER_QUADRATIC); - nbQVolum = (int)mesh->NbVolumesOfOrder(SMESH::ORDER_QUADRATIC); - - nbEdges = (int)mesh->NbEdgesOfOrder(SMESH::ORDER_LINEAR); - nbFaces = (int)mesh->NbFacesOfOrder(SMESH::ORDER_LINEAR); - nbVolum = (int)mesh->NbVolumesOfOrder(SMESH::ORDER_LINEAR); - - if( nbAllElem == (nbQEdges+nbQFaces+nbQVolum) ) - return SMESHGUI_ConvToQuadOp::Quadratic; - else if ( nbAllElem == (nbEdges+nbFaces+nbVolum) ) - return SMESHGUI_ConvToQuadOp::Linear; - else - return SMESHGUI_ConvToQuadOp::Comp; + SMESH::long_array_var nbElemOfType = idSource->GetMeshInfo(); + bool hasQuad = ( nbElemOfType[SMDSEntity_Quad_Edge ] || + nbElemOfType[SMDSEntity_Quad_Triangle ] || + nbElemOfType[SMDSEntity_Quad_Quadrangle] || + nbElemOfType[SMDSEntity_Quad_Tetra ] || + nbElemOfType[SMDSEntity_Quad_Hexa ] || + nbElemOfType[SMDSEntity_Quad_Pyramid ] || + nbElemOfType[SMDSEntity_Quad_Penta ] ); + + bool hasLin = ( nbElemOfType[SMDSEntity_Edge ] || + nbElemOfType[SMDSEntity_Triangle ] || + nbElemOfType[SMDSEntity_Quadrangle] || + nbElemOfType[SMDSEntity_Tetra ] || + nbElemOfType[SMDSEntity_Hexa ] || + nbElemOfType[SMDSEntity_Pyramid ] || + nbElemOfType[SMDSEntity_Penta ] ); + + if ( hasQuad && hasLin ) + return Comp; + return hasQuad ? Quadratic : Linear; } - void SMESHGUI_ConvToQuadOp::ConnectRadioButtons( int id ) { - QString anMeshEntry = myDlg->selectedObject( 0 ); - _PTR(SObject) pMesh = studyDS()->FindObjectID( anMeshEntry.toLatin1().data() ); - if ( !pMesh ) return; + QString anObjEntry = myDlg->selectedObject( 0 ); + _PTR(SObject) pObj = studyDS()->FindObjectID( anObjEntry.toLatin1().data() ); + if ( !pObj ) return; - SMESH::SMESH_Mesh_var mesh = - SMESH::SObjectToInterface( pMesh ); + SMESH::SMESH_IDSource_var idSource = + SMESH::SObjectToInterface( pObj ); + SMESH::SMESH_Mesh_var mesh = idSource->GetMesh(); - GEOM::GEOM_Object_var mainGeom; - mainGeom = mesh->GetShapeToMesh(); + bool hasGeom = mesh->HasShapeToMesh(); - if( id || mainGeom->_is_nil() ) + if( id || !hasGeom ) myDlg->SetEnabledCheck( false ); else myDlg->SetEnabledCheck( true ); diff --git a/src/SMESHGUI/SMESHGUI_ConvToQuadOp.h b/src/SMESHGUI/SMESHGUI_ConvToQuadOp.h index f4f13e72c..26f59819c 100644 --- a/src/SMESHGUI/SMESHGUI_ConvToQuadOp.h +++ b/src/SMESHGUI/SMESHGUI_ConvToQuadOp.h @@ -55,7 +55,7 @@ protected: virtual void startOperation(); virtual void selectionDone(); virtual SUIT_SelectionFilter* createFilter( const int ) const; - MeshType ConsistMesh( const SMESH::SMESH_Mesh_var& ) const; + MeshType ConsistMesh( const SMESH::SMESH_IDSource_var& ) const; protected slots: virtual bool onApply(); diff --git a/src/SMESHGUI/SMESH_msg_en.ts b/src/SMESHGUI/SMESH_msg_en.ts index d6e8ce582..3dcdc8ae9 100644 --- a/src/SMESHGUI/SMESH_msg_en.ts +++ b/src/SMESHGUI/SMESH_msg_en.ts @@ -3903,7 +3903,7 @@ Do you want to restore original submesh priority? MESH - Mesh + Mesh or Sub-mesh RADIOBTN_1 @@ -3913,6 +3913,10 @@ Do you want to restore original submesh priority? RADIOBTN_2 Convert from quadratic + + NON_CONFORM_WARNING + Warning: mesh can become non-conformal + SMESHGUI_ConvToQuadOp -- 2.39.2