X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMeasureGUI%2FMeasureGUI_InertiaDlg.cxx;h=ee14238b3843f6f455e2040d6ef515c956d40dc5;hb=6c8fca7b1fc27090ae4fd7dae2f2c6fec07739ba;hp=96c38a341a9168b913d40f1394c0c9f7dc11166a;hpb=d3dd282390888d7dc091ba2c2ffe7923bd7458e6;p=modules%2Fgeom.git diff --git a/src/MeasureGUI/MeasureGUI_InertiaDlg.cxx b/src/MeasureGUI/MeasureGUI_InertiaDlg.cxx index 96c38a341..ee14238b3 100644 --- a/src/MeasureGUI/MeasureGUI_InertiaDlg.cxx +++ b/src/MeasureGUI/MeasureGUI_InertiaDlg.cxx @@ -1,102 +1,104 @@ -// GEOM GEOMGUI : GUI for Geometry component +// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE // -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // +// 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, 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 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// File : MeasureGUI_InertiaDlg.cxx -// Author : Lucien PIGNOLONI -// Module : GEOM +// GEOM GEOMGUI : GUI for Geometry component +// File : MeasureGUI_InertiaDlg.cxx +// Author : Lucien PIGNOLONI, Open CASCADE S.A.S. +// #include "MeasureGUI_InertiaDlg.h" -#include "MeasureGUI_1Sel12LineEdit_QTD.h" -#include "SALOMEGUI_QtCatchCorbaException.hxx" +#include "MeasureGUI_Widgets.h" -#include "GEOMBase.h" +#include +#include -#include -#include -#include #include -#include - -#include "utilities.h" -#include "QAD_Desktop.h" -#include -#include -#include -#include -#include +#include +#include +#include //================================================================================= // class : MeasureGUI_InertiaDlg() // purpose : Constructs a MeasureGUI_InertiaDlg which is a child of 'parent', with the // name 'name' and widget flags set to 'f'. // The dialog will by default be modeless, unless you set 'modal' to -// TRUE to construct a modal dialog. +// true to construct a modal dialog. //================================================================================= -MeasureGUI_InertiaDlg::MeasureGUI_InertiaDlg( QWidget* parent, SALOME_Selection* Sel ) -: MeasureGUI_Skeleton( parent, "MeasureGUI_InertiaDlg", Sel ) +MeasureGUI_InertiaDlg::MeasureGUI_InertiaDlg( GeometryGUI* GUI, QWidget* parent ) + : MeasureGUI_Skeleton( GUI, parent ) { - QPixmap image0( QAD_Desktop::getResourceManager()->loadPixmap( + QPixmap image0( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM",tr( "ICON_DLG_INERTIA" ) ) ); - QPixmap image1( QAD_Desktop::getResourceManager()->loadPixmap( + QPixmap image1( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM",tr( "ICON_SELECT" ) ) ); - setCaption( tr( "GEOM_INERTIA_TITLE" ) ); + setWindowTitle( tr( "GEOM_INERTIA_TITLE" ) ); /***************************************************************/ - GroupConstructors->setTitle( tr( "GEOM_INERTIA_CONSTR" ) ); - RadioButton1->setPixmap( image0 ); + mainFrame()->GroupConstructors->setTitle( tr( "GEOM_INERTIA_CONSTR" ) ); + mainFrame()->RadioButton1->setIcon( image0 ); - myGrp = new MeasureGUI_1Sel12LineEdit_QTD( this, "myGrp" ); + myGrp = new MeasureGUI_1Sel12LineEdit( centralWidget() ); myGrp->GroupBox1->setTitle( tr( "GEOM_MATRIX" ) ); myGrp->TextLabel1->setText( tr( "GEOM_OBJECT" ) ); - myGrp->TextLabel2->setText( tr( "GEOM_INERTIA_I" ).arg( "1" ) ); - myGrp->TextLabel3->setText( tr( "GEOM_INERTIA_I" ).arg( "2" ) ); - myGrp->TextLabel4->setText( tr( "GEOM_INERTIA_I" ).arg( "3" ) ); - myGrp->TextLabel5->setText( tr( "GEOM_INERTIA_IXYZ" ) ); - myGrp->LineEdit11->setReadOnly( TRUE ); - myGrp->LineEdit12->setReadOnly( TRUE ); - myGrp->LineEdit13->setReadOnly( TRUE ); - myGrp->LineEdit21->setReadOnly( TRUE ); - myGrp->LineEdit22->setReadOnly( TRUE ); - myGrp->LineEdit23->setReadOnly( TRUE ); - myGrp->LineEdit31->setReadOnly( TRUE ); - myGrp->LineEdit32->setReadOnly( TRUE ); - myGrp->LineEdit33->setReadOnly( TRUE ); - myGrp->LineEdit41->setReadOnly( TRUE ); - myGrp->LineEdit42->setReadOnly( TRUE ); - myGrp->LineEdit43->setReadOnly( TRUE ); - myGrp->PushButton1->setPixmap( image1 ); + myGrp->TextLabel2_1->setText( "1:1" ); + myGrp->TextLabel2_2->setText( "1:2" ); + myGrp->TextLabel2_3->setText( "1:3" ); + myGrp->TextLabel3_1->setText( "2:1" ); + myGrp->TextLabel3_2->setText( "2:2" ); + myGrp->TextLabel3_3->setText( "2:3" ); + myGrp->TextLabel4_1->setText( "3:1" ); + myGrp->TextLabel4_2->setText( "3:2" ); + myGrp->TextLabel4_3->setText( "3:3" ); + myGrp->TextLabel5_1->setText( "IX" ); + myGrp->TextLabel5_2->setText( "IY" ); + myGrp->TextLabel5_3->setText( "IZ" ); + myGrp->LineEdit11->setReadOnly( true ); + myGrp->LineEdit12->setReadOnly( true ); + myGrp->LineEdit13->setReadOnly( true ); + myGrp->LineEdit21->setReadOnly( true ); + myGrp->LineEdit22->setReadOnly( true ); + myGrp->LineEdit23->setReadOnly( true ); + myGrp->LineEdit31->setReadOnly( true ); + myGrp->LineEdit32->setReadOnly( true ); + myGrp->LineEdit33->setReadOnly( true ); + myGrp->LineEdit41->setReadOnly( true ); + myGrp->LineEdit42->setReadOnly( true ); + myGrp->LineEdit43->setReadOnly( true ); + myGrp->PushButton1->setIcon( image1 ); myGrp->LineEdit1->setReadOnly( true ); - Layout1->addWidget( myGrp, 1, 0 ); + QVBoxLayout* layout = new QVBoxLayout( centralWidget() ); + layout->setMargin( 0 ); layout->setSpacing( 6 ); + layout->addWidget( myGrp ); /***************************************************************/ + myHelpFileName = "inertia_page.html"; + /* Initialisation */ - Init( Sel ); + Init(); } @@ -113,13 +115,26 @@ MeasureGUI_InertiaDlg::~MeasureGUI_InertiaDlg() // function : Init() // purpose : //================================================================================= -void MeasureGUI_InertiaDlg::Init( SALOME_Selection* Sel ) +void MeasureGUI_InertiaDlg::Init() { mySelBtn = myGrp->PushButton1; mySelEdit = myGrp->LineEdit1; - MeasureGUI_Skeleton::Init( Sel ); + MeasureGUI_Skeleton::Init(); +} + +//================================================================================= +// function : activateSelection() +// purpose : +//================================================================================= +void MeasureGUI_InertiaDlg::activateSelection() +{ + MeasureGUI_Skeleton::activateSelection(); + std::list needTypes; + needTypes.push_back( TopAbs_VERTEX ), needTypes.push_back( TopAbs_EDGE ), needTypes.push_back( TopAbs_WIRE ), needTypes.push_back( TopAbs_FACE ), needTypes.push_back( TopAbs_SHELL ), needTypes.push_back( TopAbs_SOLID ), needTypes.push_back( TopAbs_COMPOUND ); + localSelection(GEOM::GEOM_Object::_nil(), needTypes ); } + //================================================================================= // function : processObject // purpose : @@ -129,8 +144,7 @@ void MeasureGUI_InertiaDlg::processObject() gp_XYZ anIXYZ; gp_Mat aMat; - if ( !getParameters( aMat, anIXYZ ) ) - { + if ( !getParameters( aMat, anIXYZ ) ) { mySelEdit->setText( "" ); myGrp->LineEdit11->setText( "" ); @@ -149,23 +163,22 @@ void MeasureGUI_InertiaDlg::processObject() myGrp->LineEdit42->setText( "" ); myGrp->LineEdit43->setText( "" ); } - else - { - myGrp->LineEdit11->setText( QString( "%1" ).arg( aMat( 1, 1 ), 12, 'e', 4 ) ); - myGrp->LineEdit12->setText( QString( "%1" ).arg( aMat( 1, 2 ), 12, 'e', 4 ) ); - myGrp->LineEdit13->setText( QString( "%1" ).arg( aMat( 1, 3 ), 12, 'e', 4 ) ); + else { + myGrp->LineEdit11->setText( DlgRef::PrintDoubleValue( aMat( 1, 1 ), -6 ) ); + myGrp->LineEdit12->setText( DlgRef::PrintDoubleValue( aMat( 1, 2 ), -6 ) ); + myGrp->LineEdit13->setText( DlgRef::PrintDoubleValue( aMat( 1, 3 ), -6 ) ); - myGrp->LineEdit21->setText( QString( "%1" ).arg( aMat( 2, 1 ), 12, 'e', 4 ) ); - myGrp->LineEdit22->setText( QString( "%1" ).arg( aMat( 2, 2 ), 12, 'e', 4 ) ); - myGrp->LineEdit23->setText( QString( "%1" ).arg( aMat( 2, 3 ), 12, 'e', 4 ) ); + myGrp->LineEdit21->setText( DlgRef::PrintDoubleValue( aMat( 2, 1 ), -6 ) ); + myGrp->LineEdit22->setText( DlgRef::PrintDoubleValue( aMat( 2, 2 ), -6 ) ); + myGrp->LineEdit23->setText( DlgRef::PrintDoubleValue( aMat( 2, 3 ), -6 ) ); - myGrp->LineEdit31->setText( QString( "%1" ).arg( aMat( 3, 1 ), 12, 'e', 4 ) ); - myGrp->LineEdit32->setText( QString( "%1" ).arg( aMat( 3, 2 ), 12, 'e', 4 ) ); - myGrp->LineEdit33->setText( QString( "%1" ).arg( aMat( 3, 3 ), 12, 'e', 4 ) ); + myGrp->LineEdit31->setText( DlgRef::PrintDoubleValue( aMat( 3, 1 ), -6 ) ); + myGrp->LineEdit32->setText( DlgRef::PrintDoubleValue( aMat( 3, 2 ), -6 ) ); + myGrp->LineEdit33->setText( DlgRef::PrintDoubleValue( aMat( 3, 3 ), -6 ) ); - myGrp->LineEdit41->setText( QString( "%1" ).arg( anIXYZ.X(), 12, 'e', 4 ) ); - myGrp->LineEdit42->setText( QString( "%1" ).arg( anIXYZ.Y(), 12, 'e', 4 ) ); - myGrp->LineEdit43->setText( QString( "%1" ).arg( anIXYZ.Z(), 12, 'e', 4 ) ); + myGrp->LineEdit41->setText( DlgRef::PrintDoubleValue( anIXYZ.X(), -6 ) ); + myGrp->LineEdit42->setText( DlgRef::PrintDoubleValue( anIXYZ.Y(), -6 ) ); + myGrp->LineEdit43->setText( DlgRef::PrintDoubleValue( anIXYZ.Z(), -6 ) ); } } @@ -176,28 +189,44 @@ void MeasureGUI_InertiaDlg::processObject() bool MeasureGUI_InertiaDlg::getParameters( gp_Mat& I, gp_XYZ& theIXYZ ) { - if ( myObj->_is_nil() ) + if ( !myObj ) return false; - else - { - try - { + else { + GEOM::GEOM_IMeasureOperations_var anOper = GEOM::GEOM_IMeasureOperations::_narrow( getOperation() ); + try { double x, y, z; - GEOM::GEOM_IMeasureOperations::_narrow( getOperation() )->GetInertia( myObj, - I( 1, 1 ), I( 1, 2 ), I( 1, 3 ), - I( 2, 1 ), I( 2, 2 ), I( 2, 3 ), - I( 3, 1 ), I( 3, 2 ), I( 3, 3 ), - x, y, z ); + anOper->GetInertia( myObj.get(), + I( 1, 1 ), I( 1, 2 ), I( 1, 3 ), + I( 2, 1 ), I( 2, 2 ), I( 2, 3 ), + I( 3, 1 ), I( 3, 2 ), I( 3, 3 ), + x, y, z ); theIXYZ.SetCoord( x, y, z ); } - catch( const SALOME::SALOME_Exception& e ) - { - QtCatchCorbaException( e ); + catch ( const SALOME::SALOME_Exception& e ) { + SalomeApp_Tools::QtCatchCorbaException( e ); return false; } - return getOperation()->IsDone(); + return anOper->IsDone(); } } +void MeasureGUI_InertiaDlg::SelectionIntoArgument() +{ + myObj.nullify(); + QList aTypes; + aTypes << TopAbs_VERTEX << TopAbs_EDGE << TopAbs_WIRE << TopAbs_FACE << TopAbs_SHELL << TopAbs_SOLID << TopAbs_COMPSOLID << TopAbs_COMPOUND << TopAbs_SHAPE; + myObj = getSelected( aTypes ); + + if (!myObj) { + mySelEdit->setText(""); + processObject(); + erasePreview(); + return; + } + + mySelEdit->setText(GEOMBase::GetName(myObj.get())); + processObject(); + redisplayPreview(); +}