X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMeasureGUI%2FMeasureGUI_CenterMassDlg.cxx;h=28de1dbfaf725d6498d75d307f80dcdade9f6489;hb=e067674b75266d9f67a2c474d8dc901d9f65fe48;hp=64a3f556eae2376a79452de55bd64dd0dfbbeadb;hpb=4e4b3762fc1215eb520840fe65eaeeea0854eff8;p=modules%2Fgeom.git diff --git a/src/MeasureGUI/MeasureGUI_CenterMassDlg.cxx b/src/MeasureGUI/MeasureGUI_CenterMassDlg.cxx index 64a3f556e..28de1dbfa 100644 --- a/src/MeasureGUI/MeasureGUI_CenterMassDlg.cxx +++ b/src/MeasureGUI/MeasureGUI_CenterMassDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -120,10 +120,19 @@ void MeasureGUI_CenterMassDlg::Init() SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) ); initName( tr( "GEOM_POINT") ); - globalSelection(); + activateSelection(); SelectionIntoArgument(); } +//================================================================================= +// function : activateSelection +// purpose : +//================================================================================= +void MeasureGUI_CenterMassDlg::activateSelection() +{ + globalSelection( GEOM_ALLSHAPES ); + localSelection( TopAbs_SHAPE ); +} //================================================================================= // function : ClickOnOk() @@ -146,6 +155,7 @@ bool MeasureGUI_CenterMassDlg::ClickOnApply() return false; initName(); + activateSelection(); return true; // myMeasureGUI->MakeCDGAndDisplay( myGeomShape ); @@ -159,26 +169,17 @@ bool MeasureGUI_CenterMassDlg::ClickOnApply() void MeasureGUI_CenterMassDlg::SelectionIntoArgument() { erasePreview(); - myObj = GEOM::GEOM_Object::_nil(); - - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); - SALOME_ListIO aSelList; - aSelMgr->selectedObjects(aSelList); - if (aSelList.Extent() != 1) { - processObject(); - return; - } + 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 ); - GEOM::GEOM_Object_var aSelectedObject = - GEOMBase::ConvertIOinGEOMObject( aSelList.First() ); - - if ( aSelectedObject->_is_nil() ) { + if ( !myObj ) { processObject(); return; } - myObj = aSelectedObject; processObject(); displayPreview(true); } @@ -220,7 +221,7 @@ void MeasureGUI_CenterMassDlg::ActivateThisDialog() connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(), SIGNAL(currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) ); - globalSelection(); + activateSelection(); displayPreview(true); } @@ -230,7 +231,7 @@ void MeasureGUI_CenterMassDlg::ActivateThisDialog() //================================================================================= void MeasureGUI_CenterMassDlg::processObject() { - if ( myObj->_is_nil() ) { + if ( !myObj ) { myGrp->LineEdit1->setText( "" ); myGrp->LineEdit2->setText( "" ); myGrp->LineEdit3->setText( "" ); @@ -242,7 +243,7 @@ void MeasureGUI_CenterMassDlg::processObject() getParameters( x, y, z ); - myGrp->LineEdit1->setText( GEOMBase::GetName( myObj ) ); + myGrp->LineEdit1->setText( GEOMBase::GetName( myObj.get() ) ); SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); int aPrecision = resMgr->integerValue( "Geometry", "length_precision", 6 ); @@ -271,7 +272,7 @@ void MeasureGUI_CenterMassDlg::enterEvent( QEvent* ) //================================================================================= GEOM::GEOM_IOperations_ptr MeasureGUI_CenterMassDlg::createOperation() { - return getGeomEngine()->GetIMeasureOperations( getStudyId() ); + return getGeomEngine()->GetIMeasureOperations(); } //================================================================================= @@ -280,7 +281,7 @@ GEOM::GEOM_IOperations_ptr MeasureGUI_CenterMassDlg::createOperation() //================================================================================= bool MeasureGUI_CenterMassDlg::isValid( QString& ) { - return !myObj->_is_nil(); + return myObj; } //================================================================================= @@ -289,12 +290,12 @@ bool MeasureGUI_CenterMassDlg::isValid( QString& ) //================================================================================= bool MeasureGUI_CenterMassDlg::getParameters( double& theX, double& theY, double& theZ ) { - if ( myObj->_is_nil() ) + if ( !myObj ) return false; else { try { GEOM::GEOM_IMeasureOperations_var anOper = GEOM::GEOM_IMeasureOperations::_narrow( getOperation() ); - GEOM::GEOM_Object_var anObj = anOper->GetCentreOfMass( myObj ); + GEOM::GEOM_Object_var anObj = anOper->GetCentreOfMass( myObj.get() ); if ( !anOper->IsDone() ) return false; @@ -328,10 +329,30 @@ bool MeasureGUI_CenterMassDlg::getParameters( double& theX, double& theY, double bool MeasureGUI_CenterMassDlg::execute( ObjectList& objects ) { GEOM::GEOM_IMeasureOperations_var anOper = GEOM::GEOM_IMeasureOperations::_narrow( getOperation() ); - GEOM::GEOM_Object_var anObj = anOper->GetCentreOfMass( myObj ); + GEOM::GEOM_Object_var anObj = anOper->GetCentreOfMass( myObj.get() ); if ( !anObj->_is_nil() ) objects.push_back( anObj._retn() ); return true; } + +//================================================================================= +// function : addSubshapeToStudy +// purpose : virtual method to add new SubObjects if local selection +//================================================================================= +void MeasureGUI_CenterMassDlg::addSubshapesToStudy() +{ + GEOMBase::PublishSubObject( myObj.get() ); +} + +//================================================================================= +// function : getSourceObjects +// purpose : virtual method to get source objects +//================================================================================= +QList MeasureGUI_CenterMassDlg::getSourceObjects() +{ + QList res; + res << myObj; + return res; +}