From fa3a593199ed2de967bebf43bd0a48858cbbd578 Mon Sep 17 00:00:00 2001 From: vsr Date: Thu, 8 Aug 2013 15:17:00 +0000 Subject: [PATCH] 0021920: [CEA 689] Get some measure functions on groups available in GUI and TUI --- doc/salome/examples/Makefile.am | 1 + doc/salome/examples/measurements_ex03.py | 34 +++ doc/salome/gui/SMESH/images/basic_props.png | Bin 0 -> 13090 bytes doc/salome/gui/SMESH/images/bnd_box.png | Bin 17441 -> 14481 bytes doc/salome/gui/SMESH/images/min_distance.png | Bin 22662 -> 16329 bytes doc/salome/gui/SMESH/input/measurements.doc | 26 ++ .../gui/SMESH/input/tui_measurements.doc | 3 + idl/SMESH_Measurements.idl | 15 ++ resources/Makefile.am | 6 +- resources/mesh_measure_area.png | Bin 0 -> 806 bytes resources/mesh_measure_basic_props.png | Bin 0 -> 331 bytes resources/mesh_measure_length.png | Bin 0 -> 914 bytes resources/mesh_measure_volume.png | Bin 0 -> 1018 bytes src/SMESHGUI/SMESHGUI.cxx | 23 +- src/SMESHGUI/SMESHGUI_Measurements.cxx | 255 +++++++++++++++++- src/SMESHGUI/SMESHGUI_Measurements.h | 40 ++- src/SMESHGUI/SMESH_images.ts | 16 ++ src/SMESHGUI/SMESH_msg_en.ts | 71 +++++ src/SMESHGUI/SMESH_msg_fr.ts | 71 +++++ src/SMESH_I/SMESH_Measurements_i.cxx | 46 ++++ src/SMESH_I/SMESH_Measurements_i.hxx | 16 ++ src/SMESH_SWIG/smeshBuilder.py | 39 ++- 22 files changed, 641 insertions(+), 21 deletions(-) create mode 100644 doc/salome/examples/measurements_ex03.py create mode 100644 doc/salome/gui/SMESH/images/basic_props.png create mode 100644 resources/mesh_measure_area.png create mode 100644 resources/mesh_measure_basic_props.png create mode 100644 resources/mesh_measure_length.png create mode 100644 resources/mesh_measure_volume.png diff --git a/doc/salome/examples/Makefile.am b/doc/salome/examples/Makefile.am index 94c233a75..1846b16a2 100644 --- a/doc/salome/examples/Makefile.am +++ b/doc/salome/examples/Makefile.am @@ -110,6 +110,7 @@ GOOD_TESTS = \ grouping_elements_ex08.py \ measurements_ex01.py \ measurements_ex02.py \ + measurements_ex03.py \ modifying_meshes_ex01.py \ modifying_meshes_ex02.py \ modifying_meshes_ex03.py \ diff --git a/doc/salome/examples/measurements_ex03.py b/doc/salome/examples/measurements_ex03.py new file mode 100644 index 000000000..ef15e7e25 --- /dev/null +++ b/doc/salome/examples/measurements_ex03.py @@ -0,0 +1,34 @@ +# Basic Properties + + +import salome +salome.salome_init() +import GEOM +from salome.geom import geomBuilder +geompy = geomBuilder.New(salome.myStudy) + +import SMESH, SALOMEDS +from salome.smesh import smeshBuilder +smesh = smeshBuilder.New(salome.myStudy) +import salome_notebook + +from SMESH_mechanic import mesh as mesh1 + +mesh1.Compute() + +# compute length for mesh1 +length = mesh1.GetLength() + +# compute area for mesh1 +area = mesh1.GetArea() + +# compute volume for mesh1 +volume = mesh1.GetVolume() + +# print basic properties +print +print "Basic Properties for mesh:" +print "* length =", length +print "* area =", area +print "* volume =", volume +print diff --git a/doc/salome/gui/SMESH/images/basic_props.png b/doc/salome/gui/SMESH/images/basic_props.png new file mode 100644 index 0000000000000000000000000000000000000000..bba200d09384ef4c28feff548144436b2f118132 GIT binary patch literal 13090 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 G+y4UAIMQVR literal 0 HcmV?d00001 diff --git a/doc/salome/gui/SMESH/images/bnd_box.png b/doc/salome/gui/SMESH/images/bnd_box.png index 6761a76ff1eaa5729b6a473af5cf6772a65a2f72..d079eaaa4b38a970146d8aa085201a8ade3eec78 100644 GIT binary patch literal 14481 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 literal 17441 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 diff --git a/doc/salome/gui/SMESH/images/min_distance.png b/doc/salome/gui/SMESH/images/min_distance.png index 765522e88ce9db0187dce03a7a27df54c41f5601..486dab376e386fffbaba4798aa49939daef52d5e 100644 GIT binary patch literal 16329 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

cfc+ooVVyj{Bet%K}Q1Nv2!`TNrQL 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 diff --git a/doc/salome/gui/SMESH/input/measurements.doc b/doc/salome/gui/SMESH/input/measurements.doc index 6514cf287..0787b7c20 100644 --- a/doc/salome/gui/SMESH/input/measurements.doc +++ b/doc/salome/gui/SMESH/input/measurements.doc @@ -64,6 +64,32 @@ viewer. \image html bnd_box_preview.png +\section basic_properties_anchor Basic Properties + +This operation allows calculation of length, area or volume for the the selected +object: +- Length is calculated as a sum of length of all 1D elements; +- Area id a sum of area of all 2D elements +- Volume is a sum of volume of all 3D elements. + +To start one of Basic Properties calculations, select Length, Area +or Volume item from Measurements - Basic Properties menu. + +\image html basic_props.png + +In the dialog box select the required type of calculation (length, area or volume), select +the the object (mesh, sub-mesh or group) and press \em Compute button. + +The result of calculation will be shown in the bottom area of the +dialog box. + +\note +- If mesh consists of 3D elements only, its "length" and "area" will be 0. +- As calculation result is a sum of length, area and volume of all mesh elements, + duplications are not taken into account; i.e. all duplicated elements + (elements built on the same set of nodes) will be included into the result. +- Similarly, intersection of elements is not taken into account. + See Also a sample TUI Script of a \ref tui_measurements_page "Measurement operations". diff --git a/doc/salome/gui/SMESH/input/tui_measurements.doc b/doc/salome/gui/SMESH/input/tui_measurements.doc index 4d25c7358..950cc2aba 100644 --- a/doc/salome/gui/SMESH/input/tui_measurements.doc +++ b/doc/salome/gui/SMESH/input/tui_measurements.doc @@ -8,4 +8,7 @@ \section tui_bounding_box Bounding Box \tui_script{measurements_ex02.py} +\section tui_bounding_box Basic Properties +\tui_script{measurements_ex03.py} + */ diff --git a/idl/SMESH_Measurements.idl b/idl/SMESH_Measurements.idl index becc67547..43e5bf2bc 100644 --- a/idl/SMESH_Measurements.idl +++ b/idl/SMESH_Measurements.idl @@ -55,6 +55,21 @@ module SMESH * common bounding box of entities */ Measure BoundingBox(in ListOfIDSources sources); + + /*! + * sum of length of 1D elements of the source + */ + double Length(in SMESH_IDSource source); + + /*! + * sum of area of 2D elements of the source + */ + double Area(in SMESH_IDSource source); + + /*! + * sum of volume of 3D elements of the source + */ + double Volume(in SMESH_IDSource source); }; }; diff --git a/resources/Makefile.am b/resources/Makefile.am index 7a057d202..786c3cd48 100644 --- a/resources/Makefile.am +++ b/resources/Makefile.am @@ -208,7 +208,11 @@ dist_salomeres_DATA = \ mesh_min_dist.png \ reorient_faces_point.png \ reorient_faces_face.png \ - mesh_ball.png + mesh_ball.png \ + mesh_measure_basic_props.png \ + mesh_measure_length.png \ + mesh_measure_area.png \ + mesh_measure_volume.png # VSR: little trick to avoid putting if SMESHCatalog.xml to the distribution archive nodist_salomeres_SCRIPTS = SMESHCatalog.xml SalomeApp.xml diff --git a/resources/mesh_measure_area.png b/resources/mesh_measure_area.png new file mode 100644 index 0000000000000000000000000000000000000000..72d292be94fba3e14bef4160dc2bc84e68f6c019 GIT binary patch literal 806 zcmV+>1KIqEP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;oJmAMRCwBA{Qv(y12q9a0I|Rrjg5`}nV6UuKo->3 z*E5o9AV2^y!5AQeHf-3yz{m(TOBsl{$uSThfZ#6t^XCtPudgrIU=tIQJ0P)t|Nb$Y zJ9myG*8&6(BPUYaKrBe?FTZ~M0vhof z$Yf?;Y0J0o}BO@aje*gZ>@b~XuhWYd7GXew<6OziWKzs)z!2mP>M3JhPqd|{X~XAZ;9pFhEo2@pUmXfA#MG7x0g zf1okIr~;CpVEDoC>nBk3*FT1zKmLQ+zkdE>`1AWe!`H808G?g@VFr2t1Q5D`UqLbZ zA862jut7h83jZ*C{`i;S+n2u#KfVJ+fBXX*7-4%8s^!`NB>gG?0mOnmX#as-2{P>C zyFUyc-a-xi_7CXF{|p&^cR`9^27Lkf3`*Yt2p|jtL6HP<;lKaC8NPo0%kc3%Fy!9; z1snL|`#*-FsQWO(U;;&i00D$yASf(AUIiKU=>yOpApY{{FGE(~U6>M>VIV_} zKn;8WjZ_AJ076bSFb(=3#RnhiGQ55D8|b<}49OmM(7gyUYzLJ7itHeO0KyiAAPo#Z zfZ_EM=tU&MkiB>Wn_(aT5I`6%Oh`!h5AybpA3qq@uU}8li|7C#fSAw)KawrIlr{hXgey|+ kK-qVo_$#sHAwYlu0Gq~MKi+T<Eak-ar*6KYpz2H0xkPZEt@%S z+=|c)+t>Gy(WcG)GoMq(-fL>t4jwxmq2ku7C>Xe*;6eM}nKy5;>(nq?_m+0ESLvqD zc&$|W=|)hIiUqTiOr!A2`wZ&BR*`QQnEGaZYq;_F_Az!L^RKoSwmcQ_NGcVdw>HgT z%HE(OuiEFa8Y|pdwUt55;RRENv4ix1%~xe!T$QX6dtz0%>)HCBkGC(B@)P}~9w*wi zO7la)ogMpUaBW_+ar-sOLLuS>a}C+yNbQLWV}`L288Zmzxea>K{Z*9#d% X7DmL#%u?J0^dp0(tDnm{r-UW|MJs`Y literal 0 HcmV?d00001 diff --git a/resources/mesh_measure_length.png b/resources/mesh_measure_length.png new file mode 100644 index 0000000000000000000000000000000000000000..996f7c311582d266909fb38b03c01bc83a9d6dc4 GIT binary patch literal 914 zcmV;D18w|?P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ<2uVaiRCwBA{Qv(y12q9a0D;k~|JMHzY>WTI>9K^X zd+}cr&ISk|Mu?;pP~abs^&bfT0O`LB5I#tn8LE&O%4P(A&d|MLD2y8-S0pD7=HZz$MF5z7l!kzs~Pph+(h#f1@C)dopWnYS`~-#>$gp2P_OGAc7-rQ)z+CqNst26J00M{!OZq}F zv?a-e;osjsU>E)adigJi{r4}r>+V4HF#rS*6OKfSVrW~c1u*=60}cBPHW-)dKmZ_s znDFET6hphS9l#O8fGF-TTn7RG0mMw8l==z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZVg zFN6#Q2p~p~ml+uuQ3Qkk+x-8-@EdFx$jF~S_?O`i1IV>McQ7(s_I$~mk;m=VPhNqn$xBUAc?gP>OhvCSH zUkr90pW!YB2q3V5GEEHsL7oPg_y=g<@4rAppPpj)GT(fH(tp;1ADe*uLre^BdVe1H z_kqs=Vi-^nFqHrQ|IM)H00V=25ChmyfB=HIkej#iKPbQ%{sB$>_xvQozsvI&ex93E z0Thw|Vih3f`S*bfVi?e%fB%5q|H;7c{X5XI-wZ&P0wXekfd?RfSfF0#`P|N!z*PKy z0n^J93`|$&GyFO~YYRyHzpz}vg1R{i-=@%$!3 z$NP^!1wcbjo?&3PeV2h@(o6=B1C9U$5X^<30KEWZgS;;BUqZQnfdwiJG%)cWGsDk6 z{~5k9uyjbO|Cw-f7efKaWgx?5&Sy9Pi)DZSLQjX>V8evv?tl%0x{l$;4~G9h|9u2T z+qAzw81@1qWFN!d39zt*Is)XN9RLA@k+A>si2ny01j7G-QU2#I!@r+D!G^sD;txRe z%l`djH~~ybM;ZRMKn;8W@-E0wfB<5_NSI$<^89BL`T{cS4^Z<@pdldZK?Z&V@|Ob* z1Ev9nci=?Ea0iNCK=D_A0K%4+c^H4aOZWyX7C?r)1>!eA_8XvKOQ9|UiQQoMw*{J{ zKnC4~C2W8I!e$`IL3gz>%07*qoM6N<$g5eIqFaQ7m literal 0 HcmV?d00001 diff --git a/src/SMESHGUI/SMESHGUI.cxx b/src/SMESHGUI/SMESHGUI.cxx index 5d3cac68f..11eb2b89e 100644 --- a/src/SMESHGUI/SMESHGUI.cxx +++ b/src/SMESHGUI/SMESHGUI.cxx @@ -3541,8 +3541,20 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) } case 501: case 502: + case 503: + case 504: + case 505: { - int page = theCommandID == 501 ? SMESHGUI_MeasureDlg::MinDistance : SMESHGUI_MeasureDlg::BoundingBox; + int page = SMESHGUI_MeasureDlg::MinDistance; + if ( theCommandID == 502 ) + page = SMESHGUI_MeasureDlg::BoundingBox; + else if ( theCommandID == 503 ) + page = SMESHGUI_MeasureDlg::Length; + else if ( theCommandID == 504 ) + page = SMESHGUI_MeasureDlg::Area; + else if ( theCommandID == 505 ) + page = SMESHGUI_MeasureDlg::Volume; + EmitSignalDeactivateDialog(); SMESHGUI_MeasureDlg* dlg = new SMESHGUI_MeasureDlg( SMESHGUI::desktop(), page ); dlg->show(); @@ -3844,6 +3856,9 @@ void SMESHGUI::initialize( CAM_Application* app ) createSMESHAction( 501, "MEASURE_MIN_DIST", "ICON_MEASURE_MIN_DIST" ); createSMESHAction( 502, "MEASURE_BND_BOX", "ICON_MEASURE_BND_BOX" ); + createSMESHAction( 503, "MEASURE_LENGTH", "ICON_MEASURE_LENGTH" ); + createSMESHAction( 504, "MEASURE_AREA", "ICON_MEASURE_AREA" ); + createSMESHAction( 505, "MEASURE_VOLUME", "ICON_MEASURE_VOLUME" ); createSMESHAction( 300, "HIDE" ); createSMESHAction( 301, "SHOW" ); @@ -3872,7 +3887,8 @@ void SMESHGUI::initialize( CAM_Application* app ) addId = createMenu( tr( "MEN_ADD" ), modifyId, 402 ), removeId = createMenu( tr( "MEN_REMOVE" ), modifyId, 403 ), renumId = createMenu( tr( "MEN_RENUM" ), modifyId, 404 ), - transfId = createMenu( tr( "MEN_TRANSF" ), modifyId, 405 ); + transfId = createMenu( tr( "MEN_TRANSF" ), modifyId, 405 ), + basicPropId = createMenu( tr( "MEN_BASIC_PROPERTIES" ), measureId, -1, 10 ); //createMenu( 111, importId, -1 ); createMenu( 112, importId, -1 ); @@ -4020,6 +4036,9 @@ void SMESHGUI::initialize( CAM_Application* app ) createMenu( 501, measureId, -1 ); createMenu( 502, measureId, -1 ); + createMenu( 503, basicPropId, -1 ); + createMenu( 504, basicPropId, -1 ); + createMenu( 505, basicPropId, -1 ); createMenu( 214, viewId, -1 ); // ----- create toolbars -------------- diff --git a/src/SMESHGUI/SMESHGUI_Measurements.cxx b/src/SMESHGUI/SMESHGUI_Measurements.cxx index a5580dd65..8cbf40364 100644 --- a/src/SMESHGUI/SMESHGUI_Measurements.cxx +++ b/src/SMESHGUI/SMESHGUI_Measurements.cxx @@ -1085,6 +1085,219 @@ void SMESHGUI_BoundingBox::clear() erasePreview(); } +/*! + \class SMESHGUI_BasicProperties + \brief basic properties measurement widget. + + Widget to calculate length, area or volume for the selected object(s). +*/ + +/*! + \brief Constructor. + \param parent parent widget +*/ +SMESHGUI_BasicProperties::SMESHGUI_BasicProperties( QWidget* parent ) +: QWidget( parent ) +{ + // Property (length, area or volume) + QGroupBox* aPropertyGrp = new QGroupBox( tr( "PROPERTY" ), this ); + + QRadioButton* aLength = new QRadioButton( tr( "LENGTH" ), aPropertyGrp ); + QRadioButton* anArea = new QRadioButton( tr( "AREA" ), aPropertyGrp ); + QRadioButton* aVolume = new QRadioButton( tr( "VOLUME" ), aPropertyGrp ); + + myMode = new QButtonGroup( this ); + myMode->addButton( aLength, Length ); + myMode->addButton( anArea, Area ); + myMode->addButton( aVolume, Volume ); + + QHBoxLayout* aPropertyLayout = new QHBoxLayout; + aPropertyLayout->addWidget( aLength ); + aPropertyLayout->addWidget( anArea ); + aPropertyLayout->addWidget( aVolume ); + + aPropertyGrp->setLayout( aPropertyLayout ); + + // Source object + QGroupBox* aSourceGrp = new QGroupBox( tr( "SOURCE_MESH_SUBMESH_GROUP" ), this ); + + mySource = new QLineEdit( aSourceGrp ); + mySource->setReadOnly( true ); + + QHBoxLayout* aSourceLayout = new QHBoxLayout; + aSourceLayout->addWidget( mySource ); + + aSourceGrp->setLayout( aSourceLayout ); + + // Compute button + QPushButton* aCompute = new QPushButton( tr( "COMPUTE" ), this ); + + // Result of computation (length, area or volume) + myResultGrp = new QGroupBox( this ); + + myResult = new QLineEdit; + myResult->setReadOnly( true ); + + QHBoxLayout* aResultLayout = new QHBoxLayout; + aResultLayout->addWidget( myResult ); + + myResultGrp->setLayout( aResultLayout ); + + // Layout + QGridLayout* aMainLayout = new QGridLayout( this ); + aMainLayout->setMargin( MARGIN ); + aMainLayout->setSpacing( SPACING ); + + aMainLayout->addWidget( aPropertyGrp, 0, 0, 1, 2 ); + aMainLayout->addWidget( aSourceGrp, 1, 0, 1, 2 ); + aMainLayout->addWidget( aCompute, 2, 0 ); + aMainLayout->addWidget( myResultGrp, 3, 0, 1, 2 ); + aMainLayout->setColumnStretch( 1, 5 ); + aMainLayout->setRowStretch( 4, 5 ); + + // Initial state + setMode( Length ); + + // Connections + connect( myMode, SIGNAL( buttonClicked( int ) ), this, SLOT( modeChanged( int ) ) ); + connect( aCompute, SIGNAL( clicked() ), this, SLOT( compute() ) ); + + // Selection filter + QList filters; + filters.append( new SMESH_TypeFilter( SMESH::MESHorSUBMESH ) ); + filters.append( new SMESH_TypeFilter( SMESH::GROUP ) ); + myFilter = new SMESH_LogicalFilter( filters, SMESH_LogicalFilter::LO_OR ); +} + +/*! + \brief Destructor +*/ +SMESHGUI_BasicProperties::~SMESHGUI_BasicProperties() +{ +} + +/*! + \brief Sets the measurement mode. + \param theMode the mode to set (length, area or volume meausurement) +*/ +void SMESHGUI_BasicProperties::setMode( const Mode theMode ) +{ + QRadioButton* aButton = qobject_cast( myMode->button( theMode ) ); + if ( aButton ) { + aButton->setChecked( true ); + modeChanged( theMode ); + } +} + +/*! + \brief Setup the selection mode. +*/ +void SMESHGUI_BasicProperties::updateSelection() +{ + LightApp_SelectionMgr* selMgr = SMESHGUI::selectionMgr(); + + disconnect( selMgr, 0, this, 0 ); + selMgr->clearFilters(); + + SMESH::SetPointRepresentation( false ); + if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow() ) { + aViewWindow->SetSelectionMode( ActorSelection ); + } + selMgr->installFilter( myFilter ); + + connect( selMgr, SIGNAL( currentSelectionChanged() ), this, SLOT( selectionChanged() ) ); +} + +/*! + \brief Deactivate widget +*/ +void SMESHGUI_BasicProperties::deactivate() +{ + disconnect( SMESHGUI::selectionMgr(), 0, this, 0 ); +} + +/*! + \brief Called when selection is changed +*/ +void SMESHGUI_BasicProperties::selectionChanged() +{ + SUIT_OverrideCursor wc; + + SALOME_ListIO selected; + SMESHGUI::selectionMgr()->selectedObjects( selected ); + + if ( selected.Extent() == 1 ) { + Handle(SALOME_InteractiveObject) IO = selected.First(); + SMESH::SMESH_IDSource_var obj = SMESH::IObjectToInterface( IO ); + if ( !CORBA::is_nil( obj ) ) { + mySrc = obj; + + QString aName; + SMESH::GetNameOfSelectedIObjects( SMESHGUI::selectionMgr(), aName ); + mySource->setText( aName ); + } + } + + clear(); +} + +/*! + \brief Called when the measurement mode selection is changed. + \param theMode the selected mode +*/ +void SMESHGUI_BasicProperties::modeChanged( int theMode ) +{ + clear(); + + if ( theMode == Length ) { + myResultGrp->setTitle( tr("LENGTH") ); + } else if ( theMode == Area ) { + myResultGrp->setTitle( tr("AREA") ); + } else if ( theMode == Volume ) { + myResultGrp->setTitle( tr("VOLUME") ); + } +} + +/*! + \brief Calculate length, area or volume for the selected object(s) +*/ +void SMESHGUI_BasicProperties::compute() +{ + SUIT_OverrideCursor wc; + + SMESH::SMESH_IDSource_var source; + + if ( !CORBA::is_nil( mySrc ) ) { + // compute + int precision = SMESHGUI::resourceMgr()->integerValue( "SMESH", "length_precision", 6 ); + SMESH::Measurements_var measure = SMESHGUI::GetSMESHGen()->CreateMeasurements(); + + double result = 0; + + if ( myMode->checkedId() == Length ) { + result = measure->Length( mySrc.in() ); + } else if ( myMode->checkedId() == Area ) { + result = measure->Area( mySrc.in() ); + } else if ( myMode->checkedId() == Volume ) { + result = measure->Volume( mySrc.in() ); + } + + measure->UnRegister(); + + myResult->setText( QString::number( result, precision > 0 ? 'f' : 'g', qAbs( precision ) ) ); + } else { + clear(); + } +} + +/*! + \brief Reset the widget to the initial state (nullify the result field) +*/ +void SMESHGUI_BasicProperties::clear() +{ + myResult->clear(); +} + /*! \class SMESHGUI_MeshInfoDlg \brief Centralized dialog box for the measurements @@ -1110,12 +1323,17 @@ SMESHGUI_MeasureDlg::SMESHGUI_MeasureDlg( QWidget* parent, int page ) // min distance myMinDist = new SMESHGUI_MinDistance( myTabWidget ); - myTabWidget->addTab( myMinDist, resMgr->loadPixmap( "SMESH", tr( "ICON_MEASURE_MIN_DIST" ) ), tr( "MIN_DIST" ) ); + int aMinDistInd = myTabWidget->addTab( myMinDist, resMgr->loadPixmap( "SMESH", tr( "ICON_MEASURE_MIN_DIST" ) ), tr( "MIN_DIST" ) ); // bounding box myBndBox = new SMESHGUI_BoundingBox( myTabWidget ); - myTabWidget->addTab( myBndBox, resMgr->loadPixmap( "SMESH", tr( "ICON_MEASURE_BND_BOX" ) ), tr( "BND_BOX" ) ); + int aBndBoxInd = myTabWidget->addTab( myBndBox, resMgr->loadPixmap( "SMESH", tr( "ICON_MEASURE_BND_BOX" ) ), tr( "BND_BOX" ) ); + + // basic properties + + myBasicProps = new SMESHGUI_BasicProperties( myTabWidget ); + int aBasicPropInd = myTabWidget->addTab( myBasicProps, resMgr->loadPixmap( "SMESH", tr( "ICON_MEASURE_BASIC_PROPS" ) ), tr( "BASIC_PROPERTIES" ) ); // buttons QPushButton* okBtn = new QPushButton( tr( "SMESH_BUT_OK" ), this ); @@ -1139,7 +1357,19 @@ SMESHGUI_MeasureDlg::SMESHGUI_MeasureDlg( QWidget* parent, int page ) l->addStretch(); l->addLayout( btnLayout ); - myTabWidget->setCurrentIndex( qMax( (int)MinDistance, qMin( (int)BoundingBox, page ) ) ); + int anInd = -1; + if ( page == MinDistance ) { + anInd = aMinDistInd; + } else if ( page == BoundingBox ) { + anInd = aBndBoxInd; + } else if ( page == Length || page == Area || page == Volume ) { + myBasicProps->setMode( (SMESHGUI_BasicProperties::Mode)(page - Length) ); + anInd = aBasicPropInd; + } + + if ( anInd >= 0 ) { + myTabWidget->setCurrentIndex( anInd ); + } connect( okBtn, SIGNAL( clicked() ), this, SLOT( reject() ) ); connect( helpBtn, SIGNAL( clicked() ), this, SLOT( help() ) ); @@ -1200,7 +1430,10 @@ void SMESHGUI_MeasureDlg::updateSelection() myMinDist->updateSelection(); else if ( myTabWidget->currentIndex() == BoundingBox ) myBndBox->updateSelection(); - + else { + myBndBox->erasePreview(); + myBasicProps->updateSelection(); + } } /*! @@ -1208,9 +1441,16 @@ void SMESHGUI_MeasureDlg::updateSelection() */ void SMESHGUI_MeasureDlg::help() { - SMESH::ShowHelpFile( myTabWidget->currentIndex() == MinDistance ? - "measurements_page.html#min_distance_anchor" : - "measurements_page.html#bounding_box_anchor" ); + QString aHelpFile; + if ( myTabWidget->currentIndex() == MinDistance ) { + aHelpFile = "measurements_page.html#min_distance_anchor"; + } else if ( myTabWidget->currentIndex() == BoundingBox ) { + aHelpFile = "measurements_page.html#bounding_box_anchor"; + } else { + aHelpFile = "measurements_page.html#basic_properties_anchor"; + } + + SMESH::ShowHelpFile( aHelpFile ); } /*! @@ -1229,6 +1469,7 @@ void SMESHGUI_MeasureDlg::activate() */ void SMESHGUI_MeasureDlg::deactivate() { + myBasicProps->deactivate(); myMinDist->deactivate(); myBndBox->deactivate(); myTabWidget->setEnabled( false ); diff --git a/src/SMESHGUI/SMESHGUI_Measurements.h b/src/SMESHGUI/SMESHGUI_Measurements.h index f4cd672fb..65e3539cd 100644 --- a/src/SMESHGUI/SMESHGUI_Measurements.h +++ b/src/SMESHGUI/SMESHGUI_Measurements.h @@ -32,6 +32,7 @@ class QButtonGroup; class QLineEdit; class QTabWidget; +class QGroupBox; class SUIT_SelectionFilter; class SALOME_Actor; class SMESH_Actor; @@ -101,9 +102,9 @@ public: void updateSelection(); void deactivate(); + void erasePreview(); private: - void erasePreview(); void displayPreview(); void createPreview( double, double, double, double, double, double ); @@ -135,6 +136,37 @@ private: SALOME_Actor* myPreview; }; +class SMESHGUI_EXPORT SMESHGUI_BasicProperties : public QWidget +{ + Q_OBJECT; + +public: + //! Property type + enum Mode { Length, Area, Volume }; + + SMESHGUI_BasicProperties( QWidget* = 0 ); + ~SMESHGUI_BasicProperties(); + + void setMode( const Mode ); + + void updateSelection(); + void deactivate(); + +private slots: + void selectionChanged(); + void modeChanged( int); + void compute(); + void clear(); + +private: + QButtonGroup* myMode; + QLineEdit* mySource; + QGroupBox* myResultGrp; + QLineEdit* myResult; + SMESH::SMESH_IDSource_var mySrc; + SUIT_SelectionFilter* myFilter; +}; + class SMESHGUI_EXPORT SMESHGUI_MeasureDlg : public QDialog { Q_OBJECT; @@ -145,7 +177,10 @@ public: //! Measurement type enum { MinDistance, //!< minimum distance - BoundingBox //!< bounding box + BoundingBox, //!< bounding box + Length, //!< length + Area, //!< area + Volume //!< volume }; SMESHGUI_MeasureDlg( QWidget* = 0, int = MinDistance ); @@ -167,6 +202,7 @@ private: QTabWidget* myTabWidget; SMESHGUI_MinDistance* myMinDist; SMESHGUI_BoundingBox* myBndBox; + SMESHGUI_BasicProperties* myBasicProps; }; #endif // SMESHGUI_MEASUREMENTS_H diff --git a/src/SMESHGUI/SMESH_images.ts b/src/SMESHGUI/SMESH_images.ts index a8fa7fd73..c985f167e 100644 --- a/src/SMESHGUI/SMESH_images.ts +++ b/src/SMESHGUI/SMESH_images.ts @@ -559,6 +559,22 @@ ICON_SPLIT_TO_TETRA split_into_tetra.png + + ICON_MEASURE_LENGTH + mesh_measure_length.png + + + ICON_MEASURE_AREA + mesh_measure_area.png + + + ICON_MEASURE_VOLUME + mesh_measure_volume.png + + + ICON_MEASURE_BASIC_PROPS + mesh_measure_basic_props.png + ICON_MEASURE_MIN_DIST mesh_min_dist.png diff --git a/src/SMESHGUI/SMESH_msg_en.ts b/src/SMESHGUI/SMESH_msg_en.ts index ba6d7aedf..e989562ed 100644 --- a/src/SMESHGUI/SMESH_msg_en.ts +++ b/src/SMESHGUI/SMESH_msg_en.ts @@ -712,6 +712,46 @@ TOP_MEASURE_BND_BOX Bounding box + + MEN_BASIC_PROPERTIES + Basic Properties + + + MEN_MEASURE_LENGTH + Length + + + STB_MEASURE_LENGTH + Calculate sum of length of all 1D elements of the selected object(s) + + + TOP_MEASURE_LENGTH + Length + + + MEN_MEASURE_AREA + Area + + + STB_MEASURE_AREA + Calculate sum of area of all 2D elements of the selected object(s) + + + TOP_MEASURE_AREA + Area + + + MEN_MEASURE_VOLUME + Volume + + + STB_MEASURE_VOLUME + Calculate sum of volume of all 3D elements of the selected object(s) + + + TOP_MEASURE_VOLUME + Volume + MEN_MOVE Move Node @@ -7308,6 +7348,33 @@ as they are of improper type: Distance + + SMESHGUI_BasicProperties + + PROPERTY + Property + + + LENGTH + Length + + + AREA + Area + + + VOLUME + Volume + + + SOURCE_MESH_SUBMESH_GROUP + Source (mesh, sub-mesh or group) + + + COMPUTE + Compute + + SMESHGUI_CopyMeshDlg @@ -7337,6 +7404,10 @@ as they are of improper type: BND_BOX Bounding Box + + BASIC_PROPERTIES + Basic Properties + SMESHGUI_BoundingBox diff --git a/src/SMESHGUI/SMESH_msg_fr.ts b/src/SMESHGUI/SMESH_msg_fr.ts index bc0d57a4d..6f409879b 100755 --- a/src/SMESHGUI/SMESH_msg_fr.ts +++ b/src/SMESHGUI/SMESH_msg_fr.ts @@ -748,6 +748,46 @@ TOP_MEASURE_BND_BOX Boîte englobante + + MEN_BASIC_PROPERTIES + Basic Properties + + + MEN_MEASURE_LENGTH + Length + + + STB_MEASURE_LENGTH + Calculate sum of length of all 1D elements of the selected object(s) + + + TOP_MEASURE_LENGTH + Length + + + MEN_MEASURE_AREA + Area + + + STB_MEASURE_AREA + Calculate sum of area of all 2D elements of the selected object(s) + + + TOP_MEASURE_AREA + Area + + + MEN_MEASURE_VOLUME + Volume + + + STB_MEASURE_VOLUME + Calculate sum of volume of all 3D elements of the selected object(s) + + + TOP_MEASURE_VOLUME + Volume + MEN_MOVE Déplacer un nœud @@ -7294,6 +7334,33 @@ en raison de leurs types incompatibles: Distance + + SMESHGUI_BasicProperties + + PROPERTY + Property + + + LENGTH + Length + + + AREA + Area + + + VOLUME + Volume + + + SOURCE_MESH_SUBMESH_GROUP + Source (mesh, sub-mesh or group) + + + COMPUTE + Compute + + SMESHGUI_CopyMeshDlg @@ -7323,6 +7390,10 @@ en raison de leurs types incompatibles: BND_BOX Boîte englobante + + BASIC_PROPERTIES + Basic Properties + SMESHGUI_BoundingBox diff --git a/src/SMESH_I/SMESH_Measurements_i.cxx b/src/SMESH_I/SMESH_Measurements_i.cxx index 9a9d439aa..9bb687fc3 100644 --- a/src/SMESH_I/SMESH_Measurements_i.cxx +++ b/src/SMESH_I/SMESH_Measurements_i.cxx @@ -25,6 +25,7 @@ #include "SMESH_Measurements_i.hxx" #include "SMESH_Gen_i.hxx" +#include "SMESH_Filter_i.hxx" #include "SMESH_PythonDump.hxx" #include "SMDS_Mesh.hxx" @@ -131,6 +132,24 @@ static bool isNodeType (SMESH::array_of_ElementType_var theTypes) return theTypes->length() > 0 && theTypes[0] == SMESH::NODE; } +static double getNumericalValue(SMESH::SMESH_IDSource_ptr theSource, SMESH::Controls::NumericalFunctorPtr theFunctor) +{ + double value = 0; + + if ( !CORBA::is_nil( theSource ) ) { + const SMESHDS_Mesh* aMesh = getMesh( theSource ); + if ( aMesh ) { + theFunctor->SetMesh( aMesh ); + + SMESH::long_array_var anElementsId = theSource->GetIDs(); + for (int i = 0; i < anElementsId->length(); i++) { + value += theFunctor->GetValue( anElementsId[i] ); + } + } + } + return value; +} + //======================================================================= // name : MinDistance // Purpose : minimal distance between two given entities @@ -257,3 +276,30 @@ SMESH::Measure Measurements_i::BoundingBox (const SMESH::ListOfIDSources& theSou return aMeasure; } + +//======================================================================= +// name : Length +// Purpose : sum of length of 1D elements of the source +//======================================================================= +double Measurements_i::Length(SMESH::SMESH_IDSource_ptr theSource) +{ + return getNumericalValue( theSource, SMESH::Controls::NumericalFunctorPtr(new SMESH::Controls::Length()) ); +} + +//======================================================================= +// name : Area +// Purpose : sum of area of 2D elements of the source +//======================================================================= +double Measurements_i::Area(SMESH::SMESH_IDSource_ptr theSource) +{ + return getNumericalValue( theSource, SMESH::Controls::NumericalFunctorPtr(new SMESH::Controls::Area()) ); +} + +//======================================================================= +// name : Volume +// Purpose : sum of volume of 3D elements of the source +//======================================================================= +double Measurements_i::Volume(SMESH::SMESH_IDSource_ptr theSource) +{ + return getNumericalValue( theSource, SMESH::Controls::NumericalFunctorPtr(new SMESH::Controls::Volume()) ); +} diff --git a/src/SMESH_I/SMESH_Measurements_i.hxx b/src/SMESH_I/SMESH_Measurements_i.hxx index 0f1bbadac..f7135ae44 100644 --- a/src/SMESH_I/SMESH_Measurements_i.hxx +++ b/src/SMESH_I/SMESH_Measurements_i.hxx @@ -57,6 +57,22 @@ namespace SMESH * common bounding box of entities */ SMESH::Measure BoundingBox(const SMESH::ListOfIDSources& theSources); + + + /*! + * sum of length of 1D elements of the source + */ + double Length(SMESH::SMESH_IDSource_ptr theSource); + + /*! + * sum of area of 2D elements of the source + */ + double Area(SMESH::SMESH_IDSource_ptr); + + /*! + * sum of volume of 3D elements of the source + */ + double Volume(SMESH::SMESH_IDSource_ptr); }; } diff --git a/src/SMESH_SWIG/smeshBuilder.py b/src/SMESH_SWIG/smeshBuilder.py index d0471ca0f..b0f55e498 100644 --- a/src/SMESH_SWIG/smeshBuilder.py +++ b/src/SMESH_SWIG/smeshBuilder.py @@ -4398,25 +4398,46 @@ class Mesh: return val ## Get length of 1D element. - # @param elemId mesh element ID + # @param elemId mesh element ID (if not defined - sum of length of all 1D elements will be calculated) # @return element's length value # @ingroup l1_measurements - def GetLength(self, elemId): - return self._valueFromFunctor(SMESH.FT_Length, elemId) + def GetLength(self, elemId=None): + length = 0 + if elemId == None: + aMeasurements = self.smeshpyD.CreateMeasurements() + length = aMeasurements.Length(self.GetMesh()) + aMeasurements.UnRegister() + else: + length = self._valueFromFunctor(SMESH.FT_Length, elemId) + return length ## Get area of 2D element. - # @param elemId mesh element ID + # @param elemId mesh element ID (if not defined - sum of area of all 2D elements will be calculated) # @return element's area value # @ingroup l1_measurements - def GetArea(self, elemId): - return self._valueFromFunctor(SMESH.FT_Area, elemId) + def GetArea(self, elemId=None): + area = 0 + if elemId == None: + aMeasurements = self.smeshpyD.CreateMeasurements() + area = aMeasurements.Area(self.GetMesh()) + aMeasurements.UnRegister() + else: + area = self._valueFromFunctor(SMESH.FT_Area, elemId) + return area ## Get volume of 3D element. - # @param elemId mesh element ID + # @param elemId mesh element ID (if not defined - sum of volume of all 3D elements will be calculated) # @return element's volume value # @ingroup l1_measurements - def GetVolume(self, elemId): - return self._valueFromFunctor(SMESH.FT_Volume3D, elemId) + def GetVolume(self, elemId=None): + volume = 0 + if elemId == None: + aMeasurements = self.smeshpyD.CreateMeasurements() + volume = aMeasurements.Volume(self.GetMesh()) + aMeasurements.UnRegister() + else: + volume = self._valueFromFunctor(SMESH.FT_Volume3D, elemId) + return volume ## Get maximum element length. # @param elemId mesh element ID