mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-03-01 01:15:37 +05:00
Implement ConvertFromQuadratic() operation
This commit is contained in:
parent
abfa12f3fc
commit
12375208ad
@ -34,6 +34,8 @@
|
|||||||
#include <qgroupbox.h>
|
#include <qgroupbox.h>
|
||||||
#include <qlayout.h>
|
#include <qlayout.h>
|
||||||
#include <qcheckbox.h>
|
#include <qcheckbox.h>
|
||||||
|
#include <qradiobutton.h>
|
||||||
|
#include <qbuttongroup.h>
|
||||||
|
|
||||||
SMESHGUI_ConvToQuadDlg::SMESHGUI_ConvToQuadDlg()
|
SMESHGUI_ConvToQuadDlg::SMESHGUI_ConvToQuadDlg()
|
||||||
: SMESHGUI_Dialog( 0, false, true )
|
: SMESHGUI_Dialog( 0, false, true )
|
||||||
@ -52,10 +54,24 @@ SMESHGUI_ConvToQuadDlg::SMESHGUI_ConvToQuadDlg()
|
|||||||
//Create check box
|
//Create check box
|
||||||
myMedNdsOnGeom = new QCheckBox( tr( "MEDIUMNDS" ), mainFrame() );
|
myMedNdsOnGeom = new QCheckBox( tr( "MEDIUMNDS" ), mainFrame() );
|
||||||
|
|
||||||
|
//Create RadioButtons
|
||||||
|
myBG = new QButtonGroup( 2, Qt::Vertical, "", mainFrame() );
|
||||||
|
myBG->setExclusive( true );
|
||||||
|
|
||||||
|
myRB1 = new QRadioButton( myBG );
|
||||||
|
myRB1->setText( tr( "RADIOBTN_1" ) );
|
||||||
|
myRB1->setChecked( true );
|
||||||
|
|
||||||
|
myRB2 = new QRadioButton( myBG );
|
||||||
|
myRB2->setText( tr( "RADIOBTN_2" ) );
|
||||||
|
|
||||||
// Fill layout
|
// Fill layout
|
||||||
QVBoxLayout* aLay = new QVBoxLayout( mainFrame(), 5, 5 );
|
QVBoxLayout* aLay = new QVBoxLayout( mainFrame(), 5, 5 );
|
||||||
aLay->addWidget( aGrp );
|
aLay->addWidget( aGrp );
|
||||||
aLay->addWidget( myMedNdsOnGeom );
|
aLay->addWidget( myMedNdsOnGeom );
|
||||||
|
aLay->addWidget( myBG );
|
||||||
|
|
||||||
|
connect(myBG, SIGNAL( clicked( int ) ), this, SIGNAL( onClicked( int ) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
SMESHGUI_ConvToQuadDlg::~SMESHGUI_ConvToQuadDlg()
|
SMESHGUI_ConvToQuadDlg::~SMESHGUI_ConvToQuadDlg()
|
||||||
@ -77,7 +93,38 @@ bool SMESHGUI_ConvToQuadDlg::IsEnabledCheck() const
|
|||||||
return myMedNdsOnGeom->isEnabled();
|
return myMedNdsOnGeom->isEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESHGUI_ConvToQuadDlg::SetEnabledCheck(const bool theCheck)
|
void SMESHGUI_ConvToQuadDlg::SetEnabledCheck( const bool theCheck )
|
||||||
{
|
{
|
||||||
myMedNdsOnGeom->setEnabled(theCheck);
|
myMedNdsOnGeom->setEnabled( theCheck );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int SMESHGUI_ConvToQuadDlg::CurrentRB( )
|
||||||
|
{
|
||||||
|
return myBG->selectedId();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SMESHGUI_ConvToQuadDlg::SetEnabledControls( const bool theCheck )
|
||||||
|
{
|
||||||
|
myBG->setEnabled( theCheck );
|
||||||
|
myMedNdsOnGeom->setEnabled( theCheck );
|
||||||
|
setButtonEnabled( theCheck, QtxDialog::OK | QtxDialog::Apply );
|
||||||
|
}
|
||||||
|
|
||||||
|
void SMESHGUI_ConvToQuadDlg::SetEnabledRB( const int idx, const bool theCheck )
|
||||||
|
{
|
||||||
|
if(idx)
|
||||||
|
{
|
||||||
|
myRB2->setEnabled( theCheck );
|
||||||
|
myRB1->setEnabled( !theCheck );
|
||||||
|
myRB1->setChecked( true );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
myRB1->setEnabled( theCheck );
|
||||||
|
myRB2->setEnabled( !theCheck );
|
||||||
|
myRB2->setChecked( true );
|
||||||
|
}
|
||||||
|
emit onClicked( myBG->selectedId() );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -42,6 +42,8 @@
|
|||||||
#include CORBA_SERVER_HEADER(SMESH_Mesh)
|
#include CORBA_SERVER_HEADER(SMESH_Mesh)
|
||||||
|
|
||||||
class QCheckBox;
|
class QCheckBox;
|
||||||
|
class QRadioButton;
|
||||||
|
class QButtonGroup;
|
||||||
|
|
||||||
class SMESHGUI_ConvToQuadDlg : public SMESHGUI_Dialog
|
class SMESHGUI_ConvToQuadDlg : public SMESHGUI_Dialog
|
||||||
{
|
{
|
||||||
@ -54,11 +56,22 @@ public:
|
|||||||
bool IsMediumNdsOnGeom() const;
|
bool IsMediumNdsOnGeom() const;
|
||||||
void SetMediumNdsOnGeom(const bool theCheck);
|
void SetMediumNdsOnGeom(const bool theCheck);
|
||||||
bool IsEnabledCheck() const;
|
bool IsEnabledCheck() const;
|
||||||
void SetEnabledCheck(const bool theCheck);
|
void SetEnabledCheck( const bool theCheck );
|
||||||
|
void SetEnabledGroup( const bool theCheck );
|
||||||
|
void SetEnabledControls( const bool theCheck );
|
||||||
|
void SetEnabledRB( const int idx, const bool theCheck );
|
||||||
|
int CurrentRB();//returns the ID of the selected toggle button
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void onClicked( int );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
QCheckBox* myMedNdsOnGeom;
|
QCheckBox* myMedNdsOnGeom;
|
||||||
|
QButtonGroup* myBG;
|
||||||
|
QRadioButton* myRB1;
|
||||||
|
QRadioButton* myRB2;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -91,6 +91,8 @@ void SMESHGUI_ConvToQuadOp::startOperation()
|
|||||||
{
|
{
|
||||||
myDlg = new SMESHGUI_ConvToQuadDlg( );
|
myDlg = new SMESHGUI_ConvToQuadDlg( );
|
||||||
}
|
}
|
||||||
|
connect( myDlg, SIGNAL( onClicked( int ) ), SLOT( ConnectRadioButtons( int ) ) );
|
||||||
|
|
||||||
SMESHGUI_SelectionOp::startOperation();
|
SMESHGUI_SelectionOp::startOperation();
|
||||||
|
|
||||||
myDlg->SetMediumNdsOnGeom( false );
|
myDlg->SetMediumNdsOnGeom( false );
|
||||||
@ -122,23 +124,21 @@ void SMESHGUI_ConvToQuadOp::selectionDone()
|
|||||||
SMESH::SMESH_Mesh_var mesh =
|
SMESH::SMESH_Mesh_var mesh =
|
||||||
SMESH::SObjectToInterface<SMESH::SMESH_Mesh>( pMesh );
|
SMESH::SObjectToInterface<SMESH::SMESH_Mesh>( pMesh );
|
||||||
|
|
||||||
GEOM::GEOM_Object_var mainGeom;
|
if( mesh->_is_nil() )
|
||||||
mainGeom = mesh->GetShapeToMesh();
|
|
||||||
|
|
||||||
if( mesh->_is_nil() ||
|
|
||||||
( !mesh->NbEdgesOfOrder(SMESH::ORDER_LINEAR) &&
|
|
||||||
!mesh->NbFacesOfOrder(SMESH::ORDER_LINEAR) &&
|
|
||||||
!mesh->NbVolumesOfOrder(SMESH::ORDER_LINEAR) ) )
|
|
||||||
{
|
{
|
||||||
myDlg->setButtonEnabled( false, QtxDialog::OK | QtxDialog::Apply );
|
myDlg->SetEnabledControls( false );
|
||||||
myDlg->SetEnabledCheck( false );
|
}
|
||||||
|
else if( ConsistMesh( mesh ) == SMESHGUI_ConvToQuadOp::Quadratic )
|
||||||
|
{
|
||||||
|
myDlg->SetEnabledRB( 0, false );
|
||||||
|
}
|
||||||
|
else if( ConsistMesh( mesh ) == SMESHGUI_ConvToQuadOp::Linear )
|
||||||
|
{
|
||||||
|
myDlg->SetEnabledRB( 1, false );
|
||||||
}
|
}
|
||||||
else if( mainGeom->_is_nil() && myDlg->IsEnabledCheck() )
|
|
||||||
myDlg->SetEnabledCheck( false );
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
myDlg->setButtonEnabled( true, QtxDialog::OK | QtxDialog::Apply );
|
myDlg->SetEnabledControls( true );
|
||||||
myDlg->SetEnabledCheck( true );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch ( const SALOME::SALOME_Exception& S_ex )
|
catch ( const SALOME::SALOME_Exception& S_ex )
|
||||||
@ -204,15 +204,22 @@ bool SMESHGUI_ConvToQuadOp::onApply()
|
|||||||
bool aResult = false;
|
bool aResult = false;
|
||||||
|
|
||||||
try
|
try
|
||||||
|
{
|
||||||
|
SMESH::SMESH_MeshEditor_var aEditor = mesh->GetMeshEditor();
|
||||||
|
if( !myDlg->CurrentRB() )
|
||||||
{
|
{
|
||||||
bool aParam = true;
|
bool aParam = true;
|
||||||
if( myDlg->IsEnabledCheck() )
|
if( myDlg->IsEnabledCheck() )
|
||||||
aParam = myDlg->IsMediumNdsOnGeom();
|
aParam = myDlg->IsMediumNdsOnGeom();
|
||||||
|
|
||||||
SMESH::SMESH_MeshEditor_var aEditor = mesh->GetMeshEditor();
|
|
||||||
aEditor->ConvertToQuadratic( aParam );
|
aEditor->ConvertToQuadratic( aParam );
|
||||||
aResult = true;
|
aResult = true;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
aResult = aEditor->ConvertFromQuadratic();
|
||||||
|
}
|
||||||
|
}
|
||||||
catch ( const SALOME::SALOME_Exception& S_ex )
|
catch ( const SALOME::SALOME_Exception& S_ex )
|
||||||
{
|
{
|
||||||
SalomeApp_Tools::QtCatchCorbaException( S_ex );
|
SalomeApp_Tools::QtCatchCorbaException( S_ex );
|
||||||
@ -222,11 +229,58 @@ bool SMESHGUI_ConvToQuadOp::onApply()
|
|||||||
{
|
{
|
||||||
aResult = false;
|
aResult = false;
|
||||||
}
|
}
|
||||||
if(aResult)
|
if( aResult )
|
||||||
{
|
{
|
||||||
update( UF_ObjBrowser | UF_Model );
|
update( UF_ObjBrowser | UF_Model | UF_Viewer );
|
||||||
myDlg->setButtonEnabled( false, QtxDialog::Apply );
|
selectionDone();
|
||||||
}
|
}
|
||||||
return aResult;
|
return aResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//================================================================================
|
||||||
|
/*! ConsistMesh
|
||||||
|
* Determines, what elements this mesh contains.
|
||||||
|
*/
|
||||||
|
//================================================================================
|
||||||
|
SMESHGUI_ConvToQuadOp::MeshType SMESHGUI_ConvToQuadOp::ConsistMesh( const SMESH::SMESH_Mesh_var& mesh) 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SMESHGUI_ConvToQuadOp::ConnectRadioButtons( int id )
|
||||||
|
{
|
||||||
|
QString anMeshEntry = myDlg->selectedObject( 0 );
|
||||||
|
_PTR(SObject) pMesh = studyDS()->FindObjectID( anMeshEntry.latin1() );
|
||||||
|
if ( !pMesh ) return;
|
||||||
|
|
||||||
|
SMESH::SMESH_Mesh_var mesh =
|
||||||
|
SMESH::SObjectToInterface<SMESH::SMESH_Mesh>( pMesh );
|
||||||
|
|
||||||
|
GEOM::GEOM_Object_var mainGeom;
|
||||||
|
mainGeom = mesh->GetShapeToMesh();
|
||||||
|
|
||||||
|
if( id || mainGeom->_is_nil() )
|
||||||
|
myDlg->SetEnabledCheck( false );
|
||||||
|
else
|
||||||
|
myDlg->SetEnabledCheck( true );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -43,7 +43,8 @@ class SMESHGUI_ConvToQuadOp : public SMESHGUI_SelectionOp
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
// enum HypType{ Algo = 0, MainHyp, AddHyp };
|
public:
|
||||||
|
enum MeshType{ Comp = 0, Linear, Quadratic };
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SMESHGUI_ConvToQuadOp();
|
SMESHGUI_ConvToQuadOp();
|
||||||
@ -55,9 +56,11 @@ protected:
|
|||||||
virtual void startOperation();
|
virtual void startOperation();
|
||||||
virtual void selectionDone();
|
virtual void selectionDone();
|
||||||
virtual SUIT_SelectionFilter* createFilter( const int ) const;
|
virtual SUIT_SelectionFilter* createFilter( const int ) const;
|
||||||
|
MeshType ConsistMesh( const SMESH::SMESH_Mesh_var& ) const;
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
virtual bool onApply();
|
virtual bool onApply();
|
||||||
|
void ConnectRadioButtons( int);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SMESHGUI_ConvToQuadDlg* myDlg;
|
SMESHGUI_ConvToQuadDlg* myDlg;
|
||||||
|
@ -2216,7 +2216,7 @@ msgid "MEN_MAP"
|
|||||||
msgstr "Pattern mapping"
|
msgstr "Pattern mapping"
|
||||||
|
|
||||||
msgid "MEN_CONV_TO_QUAD"
|
msgid "MEN_CONV_TO_QUAD"
|
||||||
msgstr "Convert to quadratic"
|
msgstr "Convert to/from quadratic"
|
||||||
|
|
||||||
msgid "MEN_EXTRUSION_ALONG"
|
msgid "MEN_EXTRUSION_ALONG"
|
||||||
msgstr "Extrusion along a path"
|
msgstr "Extrusion along a path"
|
||||||
@ -2569,7 +2569,7 @@ msgid "TOP_MAP"
|
|||||||
msgstr "Pattern mapping"
|
msgstr "Pattern mapping"
|
||||||
|
|
||||||
msgid "TOP_CONV_TO_QUAD"
|
msgid "TOP_CONV_TO_QUAD"
|
||||||
msgstr "Convert to quadratic"
|
msgstr "Convert to/from quadratic"
|
||||||
|
|
||||||
msgid "TOP_EXTRUSION_ALONG"
|
msgid "TOP_EXTRUSION_ALONG"
|
||||||
msgstr "Extrusion along a path"
|
msgstr "Extrusion along a path"
|
||||||
@ -2873,7 +2873,7 @@ msgid "STB_MAP"
|
|||||||
msgstr "Pattern mapping"
|
msgstr "Pattern mapping"
|
||||||
|
|
||||||
msgid "STB_CONV_TO_QUAD"
|
msgid "STB_CONV_TO_QUAD"
|
||||||
msgstr "Convert to quadratic"
|
msgstr "Convert to/from quadratic"
|
||||||
|
|
||||||
msgid "STB_EXTRUSION_ALONG"
|
msgid "STB_EXTRUSION_ALONG"
|
||||||
msgstr "Extrusion along a path"
|
msgstr "Extrusion along a path"
|
||||||
@ -3177,7 +3177,7 @@ msgstr "Mesh is not defined\nPlease specify it and try again"
|
|||||||
#-----------------------------------------------------------
|
#-----------------------------------------------------------
|
||||||
|
|
||||||
msgid "SMESHGUI_ConvToQuadDlg::CAPTION"
|
msgid "SMESHGUI_ConvToQuadDlg::CAPTION"
|
||||||
msgstr "Convert to quadratic"
|
msgstr "Convert to/from quadratic"
|
||||||
|
|
||||||
msgid "SMESHGUI_ConvToQuadDlg::MESH"
|
msgid "SMESHGUI_ConvToQuadDlg::MESH"
|
||||||
msgstr "Mesh"
|
msgstr "Mesh"
|
||||||
@ -3185,6 +3185,12 @@ msgstr "Mesh"
|
|||||||
msgid "SMESHGUI_ConvToQuadDlg::MEDIUMNDS"
|
msgid "SMESHGUI_ConvToQuadDlg::MEDIUMNDS"
|
||||||
msgstr "Medium nodes on geometry"
|
msgstr "Medium nodes on geometry"
|
||||||
|
|
||||||
|
msgid "SMESHGUI_ConvToQuadDlg::RADIOBTN_1"
|
||||||
|
msgstr "Convert to quadratic"
|
||||||
|
|
||||||
|
msgid "SMESHGUI_ConvToQuadDlg::RADIOBTN_2"
|
||||||
|
msgstr "Convert from quadratic"
|
||||||
|
|
||||||
msgid "SMESHGUI_ConvToQuadOp::MESH_IS_NOT_SELECTED"
|
msgid "SMESHGUI_ConvToQuadOp::MESH_IS_NOT_SELECTED"
|
||||||
msgstr "Mesh is not selected\nPlease specify it and try again"
|
msgstr "Mesh is not selected\nPlease specify it and try again"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user