X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMeasureGUI%2FMeasureGUI_BndBoxDlg.cxx;h=56b10a09266558c06319c3dd6100fa6ed24c42b2;hb=6c8fca7b1fc27090ae4fd7dae2f2c6fec07739ba;hp=0da5051ba80048134ca09d06f4b8e36bcae91a15;hpb=7d880c6a8262b6d670ed70ee2b9ec25c199a46d4;p=modules%2Fgeom.git diff --git a/src/MeasureGUI/MeasureGUI_BndBoxDlg.cxx b/src/MeasureGUI/MeasureGUI_BndBoxDlg.cxx index 0da5051ba..56b10a092 100644 --- a/src/MeasureGUI/MeasureGUI_BndBoxDlg.cxx +++ b/src/MeasureGUI/MeasureGUI_BndBoxDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -124,7 +124,7 @@ void MeasureGUI_BndBoxDlg::Init() this, SLOT(SelectionIntoArgument())); initName(tr("GEOM_BNDBOX")); - globalSelection(); + activateSelection(); SelectionIntoArgument(); } @@ -148,6 +148,7 @@ bool MeasureGUI_BndBoxDlg::ClickOnApply() return false; initName(); + activateSelection(); return true; } @@ -162,7 +163,7 @@ void MeasureGUI_BndBoxDlg::ActivateThisDialog() connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - globalSelection(); + activateSelection(); redisplayPreview(); } @@ -216,11 +217,11 @@ bool MeasureGUI_BndBoxDlg::getParameters (double& theXmin, double& theXmax, double& theYmin, double& theYmax, double& theZmin, double& theZmax) { - if (myObj->_is_nil()) + if (!myObj) return false; GEOM::GEOM_IMeasureOperations_var anOper = GEOM::GEOM_IMeasureOperations::_narrow(getOperation()); - anOper->GetBoundingBox(myObj, true, theXmin, theXmax, theYmin, theYmax, theZmin, theZmax); + anOper->GetBoundingBox(myObj.get(), true, theXmin, theXmax, theYmin, theYmax, theZmin, theZmax); return anOper->IsDone(); } @@ -249,28 +250,19 @@ SALOME_Prs* MeasureGUI_BndBoxDlg::buildPrs() void MeasureGUI_BndBoxDlg::SelectionIntoArgument() { myEditCurrentArgument->setText(""); - myObj = GEOM::GEOM_Object::_nil(); + myObj.nullify(); - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); - SALOME_ListIO aSelList; - aSelMgr->selectedObjects(aSelList); + 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 (aSelList.Extent() != 1) { + if ( !myObj ) { processObject(); erasePreview(); return; } - GEOM::GEOM_Object_var aSelectedObject = GEOMBase::ConvertIOinGEOMObject(aSelList.First()); - - if (aSelectedObject->_is_nil()) { - processObject(); - erasePreview(); - return; - } - - myObj = aSelectedObject; - myEditCurrentArgument->setText(GEOMBase::GetName(myObj)); + myEditCurrentArgument->setText(GEOMBase::GetName(myObj.get())); processObject(); redisplayPreview(); } @@ -290,7 +282,7 @@ GEOM::GEOM_IOperations_ptr MeasureGUI_BndBoxDlg::createOperation() //================================================================================= bool MeasureGUI_BndBoxDlg::isValid (QString&) { - return !myObj->_is_nil(); + return myObj; } //================================================================================= @@ -300,7 +292,7 @@ bool MeasureGUI_BndBoxDlg::isValid (QString&) bool MeasureGUI_BndBoxDlg::execute (ObjectList& objects) { GEOM::GEOM_IMeasureOperations_var anOper = GEOM::GEOM_IMeasureOperations::_narrow(getOperation()); - GEOM::GEOM_Object_var anObj = anOper->MakeBoundingBox(myObj, true); + GEOM::GEOM_Object_var anObj = anOper->MakeBoundingBox(myObj.get(), true); if (!anObj->_is_nil()) objects.push_back(anObj._retn()); @@ -308,6 +300,20 @@ bool MeasureGUI_BndBoxDlg::execute (ObjectList& objects) return true; } +//================================================================================= +// function : activateSelection() +// purpose : +//================================================================================= +void MeasureGUI_BndBoxDlg::activateSelection() +{ + globalSelection( GEOM_ALLSHAPES ); + std::list needTypes; + needTypes.push_back( TopAbs_SHAPE ), 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_COMPSOLID ), needTypes.push_back( TopAbs_COMPOUND ); + localSelection(GEOM::GEOM_Object::_nil(), needTypes ); +} + //================================================================================= // function : redisplayPreview() // purpose : @@ -323,7 +329,7 @@ void MeasureGUI_BndBoxDlg::redisplayPreview() erasePreview(false); try { - SUIT_OverrideCursor(); + SUIT_OverrideCursor wc; getDisplayer()->SetColor(Quantity_NOC_VIOLET); getDisplayer()->SetToActivate(false); @@ -337,3 +343,23 @@ void MeasureGUI_BndBoxDlg::redisplayPreview() catch (...) { } } + +//================================================================================= +// function : addSubshapeToStudy +// purpose : virtual method to add new SubObjects if local selection +//================================================================================= +void MeasureGUI_BndBoxDlg::addSubshapesToStudy() +{ + GEOMBase::PublishSubObject( myObj.get() ); +} + +//================================================================================= +// function : getSourceObjects +// purpose : virtual method to get source objects +//================================================================================= +QList MeasureGUI_BndBoxDlg::getSourceObjects() +{ + QList res; + res << myObj; + return res; +}