From a073e494679045b2f871ca7a6c966fd7bbdddcf1 Mon Sep 17 00:00:00 2001 From: rnv Date: Thu, 8 Jan 2009 14:23:07 +0000 Subject: [PATCH] Implementation of the issue 0019928: EDF 771 SMESH : Extrusion (Revolution) with normal to a face. --- .../gui/SMESH/images/extrusionalongaline1.png | Bin 9929 -> 16466 bytes .../gui/SMESH/images/extrusionalongaline2.png | Bin 9939 -> 16439 bytes doc/salome/gui/SMESH/input/extrusion.doc | 1 + src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx | 131 +++++++++++++----- src/SMESHGUI/SMESHGUI_ExtrusionDlg.h | 10 +- src/SMESHGUI/SMESHGUI_RevolutionDlg.cxx | 118 ++++++++++++---- src/SMESHGUI/SMESHGUI_RevolutionDlg.h | 12 ++ src/SMESHGUI/SMESHGUI_Utils.cxx | 39 +++++- src/SMESHGUI/SMESHGUI_Utils.h | 14 ++ src/SMESHGUI/SMESH_msg_en.ts | 8 ++ 10 files changed, 274 insertions(+), 59 deletions(-) diff --git a/doc/salome/gui/SMESH/images/extrusionalongaline1.png b/doc/salome/gui/SMESH/images/extrusionalongaline1.png index 7d68ecfbea12f142d165a52189001d9ed7fb79e6..5458adb5f0441e401dedcfcd9554b4997902c353 100755 GIT binary patch literal 16466 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 abjSZMK&g}L*$ChQr2bS#rCjO7`~L;A`_|b2 literal 9929 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 diff --git a/doc/salome/gui/SMESH/images/extrusionalongaline2.png b/doc/salome/gui/SMESH/images/extrusionalongaline2.png index 797fe96976d7862f58b730ffdc018673845e6995..b98b6d2793a24fd71c4701509879420560b4dfac 100755 GIT binary patch literal 16439 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 Xv-{9tyA{YkK_IP%dg^f1C$Ih&U!yS+ literal 9939 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 A{{R30 diff --git a/doc/salome/gui/SMESH/input/extrusion.doc b/doc/salome/gui/SMESH/input/extrusion.doc index 674a9d9b4..eb4b2b98c 100644 --- a/doc/salome/gui/SMESH/input/extrusion.doc +++ b/doc/salome/gui/SMESH/input/extrusion.doc @@ -29,6 +29,7 @@ The following dialog box will appear:
  • specify the IDs of the elements which will be extruded by selecting them in the 3D viewer or select the whole mesh or submesh,
  • +
  • specify the distance at which the elements will be extruded,
  • specify the vector along which the elements will be extruded,
  • number of steps.
  • diff --git a/src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx b/src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx index e09419d7a..196720eb2 100644 --- a/src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx @@ -55,6 +55,7 @@ // OCCT includes #include #include +#include // Qt includes #include @@ -163,18 +164,33 @@ SMESHGUI_ExtrusionDlg::SMESHGUI_ExtrusionDlg (SMESHGUI* theModule) // Control for the whole mesh selection CheckBoxMesh = new QCheckBox(tr("SMESH_SELECT_WHOLE_MESH"), GroupArguments); - // Controls for vector selection + //Control for the Distance selection + TextLabelDistance = new QLabel(tr("SMESH_DISTANCE"), GroupArguments); + TextLabelVector = new QLabel(tr("SMESH_VECTOR"), GroupArguments); - - TextLabelDx = new QLabel(tr("SMESH_DX"), GroupArguments); + TextLabelDx = new QLabel(tr("SMESH_X"), GroupArguments); SpinBox_Dx = new SMESHGUI_SpinBox(GroupArguments); - - TextLabelDy = new QLabel(tr("SMESH_DY"), GroupArguments); + + TextLabelDy = new QLabel(tr("SMESH_Y"), GroupArguments); SpinBox_Dy = new SMESHGUI_SpinBox(GroupArguments); - TextLabelDz = new QLabel(tr("SMESH_DZ"), GroupArguments); + TextLabelDz = new QLabel(tr("SMESH_Z"), GroupArguments); SpinBox_Dz = new SMESHGUI_SpinBox(GroupArguments); + // Controls for vector selection + + SelectVectorButton = new QPushButton(GroupArguments); + SelectVectorButton->setIcon(image2); + + TextLabelVx = new QLabel(tr("SMESH_DX"), GroupArguments); + SpinBox_Vx = new SMESHGUI_SpinBox(GroupArguments); + + TextLabelVy = new QLabel(tr("SMESH_DY"), GroupArguments); + SpinBox_Vy = new SMESHGUI_SpinBox(GroupArguments); + + TextLabelVz = new QLabel(tr("SMESH_DZ"), GroupArguments); + SpinBox_Vz = new SMESHGUI_SpinBox(GroupArguments); + // Controls for nb. steps defining TextLabelNbSteps = new QLabel(tr("SMESH_NUMBEROFSTEPS"), GroupArguments); SpinBox_NbSteps = new QSpinBox(GroupArguments); @@ -186,16 +202,24 @@ SMESHGUI_ExtrusionDlg::SMESHGUI_ExtrusionDlg (SMESHGUI* theModule) GroupArgumentsLayout->addWidget(SelectElementsButton, 0, 1); GroupArgumentsLayout->addWidget(LineEditElements, 0, 2, 1, 6); GroupArgumentsLayout->addWidget(CheckBoxMesh, 1, 0, 1, 8); - GroupArgumentsLayout->addWidget(TextLabelVector, 2, 0); + GroupArgumentsLayout->addWidget(TextLabelDistance, 2, 0); GroupArgumentsLayout->addWidget(TextLabelDx, 2, 2); GroupArgumentsLayout->addWidget(SpinBox_Dx, 2, 3); GroupArgumentsLayout->addWidget(TextLabelDy, 2, 4); GroupArgumentsLayout->addWidget(SpinBox_Dy, 2, 5); GroupArgumentsLayout->addWidget(TextLabelDz, 2, 6); GroupArgumentsLayout->addWidget(SpinBox_Dz, 2, 7); - GroupArgumentsLayout->addWidget(TextLabelNbSteps, 3, 0); - GroupArgumentsLayout->addWidget(SpinBox_NbSteps, 3, 2, 1, 6); - GroupArgumentsLayout->addWidget(MakeGroupsCheck, 4, 0, 1, 8); + GroupArgumentsLayout->addWidget(TextLabelVector, 3, 0); + GroupArgumentsLayout->addWidget(SelectVectorButton, 3, 1); + GroupArgumentsLayout->addWidget(TextLabelVx, 3, 2); + GroupArgumentsLayout->addWidget(SpinBox_Vx, 3, 3); + GroupArgumentsLayout->addWidget(TextLabelVy, 3, 4); + GroupArgumentsLayout->addWidget(SpinBox_Vy, 3, 5); + GroupArgumentsLayout->addWidget(TextLabelVz, 3, 6); + GroupArgumentsLayout->addWidget(SpinBox_Vz, 3, 7); + GroupArgumentsLayout->addWidget(TextLabelNbSteps, 4, 0); + GroupArgumentsLayout->addWidget(SpinBox_NbSteps, 4, 2, 1, 6); + GroupArgumentsLayout->addWidget(MakeGroupsCheck, 5, 0, 1, 8); /***************************************************************/ SMESHGUI_ExtrusionDlgLayout->addWidget(ConstructorsBox); @@ -203,10 +227,14 @@ SMESHGUI_ExtrusionDlg::SMESHGUI_ExtrusionDlg (SMESHGUI* theModule) SMESHGUI_ExtrusionDlgLayout->addWidget(GroupButtons); /* Initialisations */ + SpinBox_Vx->RangeStepAndValidator(-1, 1, 0.01, 3); + SpinBox_Vy->RangeStepAndValidator(-1, 1, 0.01, 3); + SpinBox_Vz->RangeStepAndValidator(-1, 1, 0.01, 3); + SpinBox_Dx->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3); SpinBox_Dy->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3); SpinBox_Dz->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3); - + SpinBox_NbSteps->setRange(1, 999999); RadioButton1->setChecked(true); @@ -239,12 +267,16 @@ SMESHGUI_ExtrusionDlg::SMESHGUI_ExtrusionDlg (SMESHGUI* theModule) connect(buttonHelp, SIGNAL(clicked()), this, SLOT(ClickOnHelp())); // to update state of the Ok & Apply buttons + connect(SpinBox_Vx, SIGNAL(valueChanged(double)), SLOT(CheckIsEnable())); + connect(SpinBox_Vy, SIGNAL(valueChanged(double)), SLOT(CheckIsEnable())); + connect(SpinBox_Vz, SIGNAL(valueChanged(double)), SLOT(CheckIsEnable())); connect(SpinBox_Dx, SIGNAL(valueChanged(double)), SLOT(CheckIsEnable())); connect(SpinBox_Dy, SIGNAL(valueChanged(double)), SLOT(CheckIsEnable())); connect(SpinBox_Dz, SIGNAL(valueChanged(double)), SLOT(CheckIsEnable())); connect(GroupConstructors, SIGNAL(buttonClicked(int)), SLOT(ConstructorsClicked(int))); connect(SelectElementsButton, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); + connect(SelectVectorButton, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); connect(mySMESHGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog())); connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); /* to close dialog if study change */ @@ -285,6 +317,9 @@ void SMESHGUI_ExtrusionDlg::Init (bool ResetControls) SpinBox_Dx->SetValue(0); SpinBox_Dy->SetValue(0); SpinBox_Dz->SetValue(0); + SpinBox_Vx->SetValue(0); + SpinBox_Vy->SetValue(0); + SpinBox_Vz->SetValue(0); CheckBoxMesh->setChecked(false); onSelectMesh(false); @@ -299,9 +334,10 @@ void SMESHGUI_ExtrusionDlg::Init (bool ResetControls) //================================================================================= void SMESHGUI_ExtrusionDlg::CheckIsEnable() { - double aX = SpinBox_Dx->GetValue(); - double aY = SpinBox_Dy->GetValue(); - double aZ = SpinBox_Dz->GetValue(); + + double aX = SpinBox_Vx->GetValue()*SpinBox_Dx->GetValue(); + double aY = SpinBox_Vy->GetValue()*SpinBox_Dy->GetValue(); + double aZ = SpinBox_Vz->GetValue()*SpinBox_Dz->GetValue(); double aModule = sqrt(aX*aX + aY*aY + aZ*aZ); bool anIsEnable = myNbOkElements > 0 && aModule > 1.0E-38; @@ -341,7 +377,7 @@ void SMESHGUI_ExtrusionDlg::ConstructorsClicked (int constructorId) } } - myEditCurrentArgument = LineEditElements; + myEditCurrentArgument = (QWidget*)LineEditElements; LineEditElements->setFocus(); if (CheckBoxMesh->isChecked()) @@ -360,11 +396,17 @@ bool SMESHGUI_ExtrusionDlg::ClickOnApply() return false; if (myNbOkElements) { - + + gp_XYZ aNormale(SpinBox_Vx->GetValue(), + SpinBox_Vy->GetValue(), + SpinBox_Vz->GetValue()); + + aNormale /= aNormale.Modulus(); + SMESH::DirStruct aVector; - aVector.PS.x = SpinBox_Dx->GetValue(); - aVector.PS.y = SpinBox_Dy->GetValue(); - aVector.PS.z = SpinBox_Dz->GetValue(); + aVector.PS.x = SpinBox_Dx->GetValue()*aNormale.X(); + aVector.PS.y = SpinBox_Dy->GetValue()*aNormale.Y(); + aVector.PS.z = SpinBox_Dz->GetValue()*aNormale.Z(); long aNbSteps = (long)SpinBox_NbSteps->value(); @@ -514,15 +556,15 @@ void SMESHGUI_ExtrusionDlg::SelectionIntoArgument() // clear myActor = 0; myIO.Nullify(); - QString aString = ""; + QString aString = ""; // set busy flag - myBusy = true; - - myEditCurrentArgument->setText(aString); - myNbOkElements = 0; - myBusy = false; - + if(myEditCurrentArgument == (QWidget*)LineEditElements) { + myBusy = true; + LineEditElements->setText(aString); + myNbOkElements = 0; + myBusy = false; + } // get selected mesh SALOME_ListIO aList; mySelectionMgr->selectedObjects(aList, SVTK_Viewer::Type()); @@ -537,7 +579,7 @@ void SMESHGUI_ExtrusionDlg::SelectionIntoArgument() myIO = IO; myActor = SMESH::FindActorByObject(myMesh); - if (myEditCurrentArgument == LineEditElements) { + if (myEditCurrentArgument == (QWidget*)LineEditElements) { int aNbElements = 0; // MakeGroups is available if there are groups @@ -595,12 +637,32 @@ void SMESHGUI_ExtrusionDlg::SelectionIntoArgument() return; myNbOkElements = true; + + myBusy = true; + ((QLineEdit*)myEditCurrentArgument)->setText(aString); + myBusy = false; } + else if(myEditCurrentArgument == (QWidget*)SpinBox_Vx){ + TColStd_IndexedMapOfInteger aMapIndex; + mySelector->GetIndex(IO,aMapIndex); + int aNbElements = aMapIndex.Extent(); + SMDS_Mesh* aMesh = myActor ? myActor->GetObject()->GetMesh() : 0; - myBusy = true; - myEditCurrentArgument->setText(aString); - myBusy = false; + if(aNbElements != 1 || !aMesh) + return; + + const SMDS_MeshFace* face = dynamic_cast(aMesh->FindElement(aMapIndex(aNbElements))); + + if (!face) + return; + gp_XYZ aNormale = SMESH::getNormale(face); + SpinBox_Vx->SetValue(aNormale.X()); + SpinBox_Vy->SetValue(aNormale.Y()); + SpinBox_Vz->SetValue(aNormale.Z()); + + } + // OK CheckIsEnable(); } @@ -618,7 +680,7 @@ void SMESHGUI_ExtrusionDlg::SetEditCurrentArgument() mySelectionMgr->clearFilters(); if (send == SelectElementsButton) { - myEditCurrentArgument = LineEditElements; + myEditCurrentArgument = (QWidget*)LineEditElements; if (CheckBoxMesh->isChecked()) { if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) aViewWindow->SetSelectionMode(ActorSelection); @@ -637,7 +699,12 @@ void SMESHGUI_ExtrusionDlg::SetEditCurrentArgument() } } } - + else if (send == SelectVectorButton){ + myEditCurrentArgument = (QWidget*)SpinBox_Vx; + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + aViewWindow->SetSelectionMode(FaceSelection); + } + myEditCurrentArgument->setFocus(); connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); SelectionIntoArgument(); diff --git a/src/SMESHGUI/SMESHGUI_ExtrusionDlg.h b/src/SMESHGUI/SMESHGUI_ExtrusionDlg.h index f9cffd5d2..252ac0274 100644 --- a/src/SMESHGUI/SMESHGUI_ExtrusionDlg.h +++ b/src/SMESHGUI/SMESHGUI_ExtrusionDlg.h @@ -77,7 +77,7 @@ private: SMESHGUI* mySMESHGUI; /* Current SMESHGUI object */ SMESHGUI_IdValidator* myIdValidator; LightApp_SelectionMgr* mySelectionMgr; /* User shape selection */ - QLineEdit* myEditCurrentArgument; /* Current LineEdit */ + QWidget* myEditCurrentArgument; /* Current argument editor */ int myNbOkElements; /* to check when elements are defined */ SVTK_Selector* mySelector; @@ -100,12 +100,20 @@ private: QLineEdit* LineEditElements; QCheckBox* CheckBoxMesh; QLabel* TextLabelVector; + QLabel* TextLabelDistance; + QPushButton* SelectVectorButton; QLabel* TextLabelDx; SMESHGUI_SpinBox* SpinBox_Dx; QLabel* TextLabelDy; SMESHGUI_SpinBox* SpinBox_Dy; QLabel* TextLabelDz; SMESHGUI_SpinBox* SpinBox_Dz; + QLabel* TextLabelVx; + SMESHGUI_SpinBox* SpinBox_Vx; + QLabel* TextLabelVy; + SMESHGUI_SpinBox* SpinBox_Vy; + QLabel* TextLabelVz; + SMESHGUI_SpinBox* SpinBox_Vz; QLabel* TextLabelNbSteps; QSpinBox* SpinBox_NbSteps; QCheckBox* MakeGroupsCheck; diff --git a/src/SMESHGUI/SMESHGUI_RevolutionDlg.cxx b/src/SMESHGUI/SMESHGUI_RevolutionDlg.cxx index b780afd4a..a8a49d119 100644 --- a/src/SMESHGUI/SMESHGUI_RevolutionDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_RevolutionDlg.cxx @@ -72,6 +72,7 @@ #include #include #include +#include // IDL includes #include @@ -88,7 +89,8 @@ SMESHGUI_RevolutionDlg::SMESHGUI_RevolutionDlg( SMESHGUI* theModule ) : QDialog( SMESH::GetDesktop( theModule ) ), mySMESHGUI( theModule ), - mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ) + mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ), + myVectorDefinition(NONE_SELECT) { mySimulation = new SMESHGUI_MeshEditPreview(SMESH::GetViewWindow( mySMESHGUI )); @@ -305,6 +307,12 @@ SMESHGUI_RevolutionDlg::SMESHGUI_RevolutionDlg( SMESHGUI* theModule ) Init(); + /*Create menu to vector selection*/ + SelectVectorMenu = new QMenu(this); + myMenuActions[SelectVectorMenu->addAction( tr( "MEN_POINT_SELECT" ) )] = POINT_SELECT; + myMenuActions[SelectVectorMenu->addAction( tr( "MEN_FACE_SELECT" ) )] = FACE_SELECT; + connect( SelectVectorMenu, SIGNAL( triggered( QAction* ) ), SLOT( onSelectVectorMenu( QAction* ) ) ); + /* signals and slots connections */ connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel())); @@ -314,7 +322,7 @@ SMESHGUI_RevolutionDlg::SMESHGUI_RevolutionDlg( SMESHGUI* theModule ) connect(SelectElementsButton, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); connect(SelectPointButton, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(SelectVectorButton, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); + connect(SelectVectorButton, SIGNAL(clicked()), this, SLOT(onSelectVectorButton())); connect(SpinBox_X, SIGNAL(valueChanged(double)), this, SLOT(toDisplaySimulation())); connect(SpinBox_Y, SIGNAL(valueChanged(double)), this, SLOT(toDisplaySimulation())); @@ -729,30 +737,57 @@ void SMESHGUI_RevolutionDlg::SelectionIntoArgument() myNbOkElements = true; } else { - aNbUnits = SMESH::GetNameOfSelectedNodes(mySelector, IO, aString); - if (aNbUnits != 1) - return; SMDS_Mesh* aMesh = myActor->GetObject()->GetMesh(); if (!aMesh) return; - const SMDS_MeshNode * n = aMesh->FindNode(aString.toInt()); - if (!n) + bool isNodeSelected = (myEditCurrentArgument == (QWidget*)SpinBox_X || + (myEditCurrentArgument == (QWidget*)SpinBox_DX && + myVectorDefinition==POINT_SELECT)); + + bool isFaceSelected = (myEditCurrentArgument == (QWidget*)SpinBox_DX && + myVectorDefinition==FACE_SELECT); + + if(isNodeSelected) { + aNbUnits = SMESH::GetNameOfSelectedNodes(mySelector, IO, aString); + } + else if(isFaceSelected){ + aNbUnits = SMESH::GetNameOfSelectedElements(mySelector, IO, aString); + } + + if (aNbUnits != 1) return; - double x = n->X(); - double y = n->Y(); - double z = n->Z(); - - if (myEditCurrentArgument == (QWidget*)SpinBox_X) { - SpinBox_X->SetValue(x); - SpinBox_Y->SetValue(y); - SpinBox_Z->SetValue(z); - } else if (myEditCurrentArgument == (QWidget*)SpinBox_DX) { - SpinBox_DX->SetValue(x - SpinBox_X->GetValue()); - SpinBox_DY->SetValue(y - SpinBox_Y->GetValue()); - SpinBox_DZ->SetValue(z - SpinBox_Z->GetValue()); + if(isNodeSelected) { + const SMDS_MeshNode * n = aMesh->FindNode(aString.toInt()); + if (!n) + return; + + double x = n->X(); + double y = n->Y(); + double z = n->Z(); + + if (myEditCurrentArgument == (QWidget*)SpinBox_X) { + SpinBox_X->SetValue(x); + SpinBox_Y->SetValue(y); + SpinBox_Z->SetValue(z); + } else if (myEditCurrentArgument == (QWidget*)SpinBox_DX) { + SpinBox_DX->SetValue(x - SpinBox_X->GetValue()); + SpinBox_DY->SetValue(y - SpinBox_Y->GetValue()); + SpinBox_DZ->SetValue(z - SpinBox_Z->GetValue()); + } + } + else if(isFaceSelected){ + const SMDS_MeshFace* face = dynamic_cast(aMesh->FindElement(aString.toInt())); + if (!face) + return; + + gp_XYZ aNormale = SMESH::getNormale(face); + SpinBox_DX->SetValue(aNormale.X()); + SpinBox_DY->SetValue(aNormale.Y()); + SpinBox_DZ->SetValue(aNormale.Z()); + } } @@ -808,12 +843,6 @@ void SMESHGUI_RevolutionDlg::SetEditCurrentArgument() SMESH::SetPointRepresentation(true); if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) aViewWindow->SetSelectionMode(NodeSelection); - } else if (send == SelectVectorButton) { - myEditCurrentArgument = (QWidget*)SpinBox_DX; - SMESH::SetPointRepresentation(true); - if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) - aViewWindow->SetSelectionMode(NodeSelection); - } else { } myEditCurrentArgument->setFocus(); @@ -1051,3 +1080,42 @@ void SMESHGUI_RevolutionDlg::onDisplaySimulation(bool toDisplayPreview) mySimulation->SetVisibility(false); } } + +//================================================================================= +// function : onSelectVectorButton() +// purpose : [slot] +//================================================================================= +void SMESHGUI_RevolutionDlg::onSelectVectorButton(){ + if(SelectVectorMenu) { + SelectVectorMenu->exec( QCursor::pos() ); + } +} + +//================================================================================= +// function : onSelectVectorMenu() +// purpose : [slot] +//================================================================================= +void SMESHGUI_RevolutionDlg::onSelectVectorMenu( QAction* action){ + if(!action) + return; + + switch(myMenuActions[action]) { + case POINT_SELECT: + SMESH::SetPointRepresentation(true); + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + aViewWindow->SetSelectionMode(NodeSelection); + break; + + case FACE_SELECT: + SMESH::SetPointRepresentation(false); + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) + aViewWindow->SetSelectionMode(FaceSelection); + break; + } + + myVectorDefinition = myMenuActions[action]; + myEditCurrentArgument = (QWidget*)SpinBox_DX; + myEditCurrentArgument->setFocus(); + connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); + SelectionIntoArgument(); +} diff --git a/src/SMESHGUI/SMESHGUI_RevolutionDlg.h b/src/SMESHGUI/SMESHGUI_RevolutionDlg.h index 206d737eb..0395e21a0 100644 --- a/src/SMESHGUI/SMESHGUI_RevolutionDlg.h +++ b/src/SMESHGUI/SMESHGUI_RevolutionDlg.h @@ -31,6 +31,7 @@ // Qt includes #include +#include // IDL includes #include @@ -53,6 +54,8 @@ class LightApp_SelectionMgr; class SMESH_LogicalFilter; class SALOME_Actor; class SMESHGUI_MeshEditPreview; +class QMenu; +class QAction; //================================================================================= // class : SMESHGUI_RevolutionDlg @@ -67,6 +70,8 @@ public: ~SMESHGUI_RevolutionDlg(); private: + enum {NONE_SELECT, POINT_SELECT, FACE_SELECT}; + void Init( bool = true); void closeEvent( QCloseEvent* ); void enterEvent( QEvent* ); /* mouse enter the QWidget */ @@ -135,6 +140,11 @@ private: QSpinBox* SpinBox_NbSteps; QLabel* TextLabelTolerance; SMESHGUI_SpinBox* SpinBox_Tolerance; + + QMenu* SelectVectorMenu; + QMap myMenuActions; + int myVectorDefinition; + QString myHelpFileName; @@ -153,6 +163,8 @@ private slots: void onVectorChanged(); void toDisplaySimulation(); void onDisplaySimulation( bool ); + void onSelectVectorMenu( QAction* ); + void onSelectVectorButton(); }; #endif // SMESHGUI_REVOLUTIONDLG_H diff --git a/src/SMESHGUI/SMESHGUI_Utils.cxx b/src/SMESHGUI/SMESHGUI_Utils.cxx index 5a8866a66..fdc83bb2a 100644 --- a/src/SMESHGUI/SMESHGUI_Utils.cxx +++ b/src/SMESHGUI/SMESHGUI_Utils.cxx @@ -25,9 +25,11 @@ // SMESH includes #include "SMESHGUI_Utils.h" - #include "SMESHGUI.h" +#include +#include + // SALOME GUI includes #include #include @@ -41,6 +43,10 @@ #include +// OCC includes +#include +#include + namespace SMESH { SUIT_Desktop* @@ -300,4 +306,35 @@ namespace SMESH arg(theHelpFileName)); } } + + //======================================================================= + /** + Return normale to a given face + */ + //======================================================================= + gp_XYZ getNormale( const SMDS_MeshFace* theFace ) + { + gp_XYZ n; + int aNbNode = theFace->NbNodes(); + TColgp_Array1OfXYZ anArrOfXYZ(1,4); + SMDS_ElemIteratorPtr aNodeItr = theFace->nodesIterator(); + int i = 1; + for ( ; aNodeItr->more() && i <= 4; i++ ) { + SMDS_MeshNode* aNode = (SMDS_MeshNode*)aNodeItr->next(); + anArrOfXYZ.SetValue(i, gp_XYZ( aNode->X(), aNode->Y(), aNode->Z() ) ); + } + + gp_XYZ q1 = anArrOfXYZ.Value(2) - anArrOfXYZ.Value(1); + gp_XYZ q2 = anArrOfXYZ.Value(3) - anArrOfXYZ.Value(1); + n = q1 ^ q2; + if ( aNbNode > 3 ) { + gp_XYZ q3 = anArrOfXYZ.Value(4) - anArrOfXYZ.Value(1); + n += q2 ^ q3; + } + double len = n.Modulus(); + if ( len > 0 ) + n /= len; + return n; + } + } // end of namespace SMESH diff --git a/src/SMESHGUI/SMESHGUI_Utils.h b/src/SMESHGUI/SMESHGUI_Utils.h index d34944d03..b4f150ac5 100644 --- a/src/SMESHGUI/SMESHGUI_Utils.h +++ b/src/SMESHGUI/SMESHGUI_Utils.h @@ -39,6 +39,9 @@ #include #include +//OCC includes +#include + class SUIT_ViewWindow; class SUIT_Desktop; class SUIT_Study; @@ -53,6 +56,8 @@ class SalomeApp_Study; class SalomeApp_Module; class LightApp_SelectionMgr; +class SMDS_MeshFace; + namespace SMESH { SMESHGUI_EXPORT @@ -158,6 +163,15 @@ SMESHGUI_EXPORT SMESHGUI_EXPORT void ShowHelpFile( const QString& ); + + /*! + * \brief Return the normal to a face + * \param theFace - input face + * \retval gp_XYZ - normal to a face + */ +SMESHGUI_EXPORT + gp_XYZ getNormale( const SMDS_MeshFace* theFace ); + } #endif // SMESHGUI_UTILS_H diff --git a/src/SMESHGUI/SMESH_msg_en.ts b/src/SMESHGUI/SMESH_msg_en.ts index 31bd404ce..baa4a1232 100644 --- a/src/SMESHGUI/SMESH_msg_en.ts +++ b/src/SMESHGUI/SMESH_msg_en.ts @@ -4366,6 +4366,14 @@ It is impossible to read point coordinates from file TOTAL_ANGLE Total Angle + + MEN_POINT_SELECT + Select Point + + + MEN_FACE_SELECT + Select Plane + SMESHGUI_SewingDlg -- 2.39.2