X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FBasicGUI%2FBasicGUI_MarkerDlg.cxx;h=2b4c26e22cfd071b671fbe19d72f327886cab100;hb=643c92eb8f6e84b5643ba9c3bc990110d166f96b;hp=a24113d4e400747f0dabc8b03a62439a31dd0dfb;hpb=7319fe8043c84555c766cc6cf7f6585f89fe4d12;p=modules%2Fgeom.git diff --git a/src/BasicGUI/BasicGUI_MarkerDlg.cxx b/src/BasicGUI/BasicGUI_MarkerDlg.cxx index a24113d4e..2b4c26e22 100644 --- a/src/BasicGUI/BasicGUI_MarkerDlg.cxx +++ b/src/BasicGUI/BasicGUI_MarkerDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 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 @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // GEOM GEOMGUI : GUI for Geometry component // File : BasicGUI_MarkerDlg.cxx // Author : Sergey LITONIN, Open CASCADE S.A.S. (sergey.litonin@opencascade.com) @@ -206,7 +207,7 @@ void BasicGUI_MarkerDlg::Init() double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100 ); for ( DataMap::iterator anIter = myData.begin(); anIter != myData.end(); ++anIter ) { - initSpinBox( anIter.value(), COORD_MIN, COORD_MAX, step, 6 ); // VSR: TODO: DBL_DIGITS_DISPLAY + initSpinBox( anIter.value(), COORD_MIN, COORD_MAX, step, "length_precision" ); connect( anIter.value(), SIGNAL( valueChanged( double ) ), this, SLOT( onValueChanged( double ) ) ); } @@ -332,11 +333,10 @@ void BasicGUI_MarkerDlg::onSelectionDone0() aSelMgr->selectedObjects(aSelList); if (aSelList.Extent() == 1) { - Standard_Boolean aRes = Standard_False; Handle(SALOME_InteractiveObject) anIO = aSelList.First(); - GEOM::GEOM_Object_var aSelectedObj = GEOMBase::ConvertIOinGEOMObject(anIO, aRes); + GEOM::GEOM_Object_var aSelectedObj = GEOMBase::ConvertIOinGEOMObject( anIO ); - if ( aRes && !aSelectedObj->_is_nil() ) { + if ( !aSelectedObj->_is_nil() ) { TopoDS_Shape aShape; if ( GEOMBase::GetShape( aSelectedObj, aShape, TopAbs_SHAPE ) && !aShape.IsNull() ) { // Existing LCS selected @@ -408,11 +408,10 @@ void BasicGUI_MarkerDlg::onSelectionDone() aSelMgr->selectedObjects(aSelList); if (aSelList.Extent() == 1) { - Standard_Boolean aRes = Standard_False; Handle(SALOME_InteractiveObject) anIO = aSelList.First(); - GEOM::GEOM_Object_var aSelectedObj = GEOMBase::ConvertIOinGEOMObject( anIO, aRes ); + GEOM::GEOM_Object_var aSelectedObj = GEOMBase::ConvertIOinGEOMObject( anIO ); - if ( !CORBA::is_nil( aSelectedObj ) && aRes ) { + if ( !CORBA::is_nil( aSelectedObj ) ) { QString aName = GEOMBase::GetName( aSelectedObj ); if ( getConstructorId() == 1 ) { // by shape position @@ -431,41 +430,47 @@ void BasicGUI_MarkerDlg::onSelectionDone() TColStd_IndexedMapOfInteger aMap; aSelMgr->GetIndexes( anIO, aMap ); - if ( !aMap.IsEmpty() ) { + if ( aMap.Extent() == 1 ) { // Local Selection int anIndex = aMap( 1 ); if ( aNeedType == TopAbs_EDGE ) - aName += QString( "_edge_%1" ).arg( anIndex ); + aName += QString( ":edge_%1" ).arg( anIndex ); else - aName += QString( "_vertex_%1" ).arg( anIndex ); - - TopTools_IndexedMapOfShape aShapes; - TopExp::MapShapes( aShape, aShapes ); - aShape = aShapes.FindKey( anIndex ); + aName += QString( ":vertex_%1" ).arg( anIndex ); + + //Find SubShape Object in Father + GEOM::GEOM_Object_var aFindedObject = GEOMBase_Helper::findObjectInFather( aSelectedObj, aName ); + if ( aFindedObject->_is_nil() ) { // Object not found in study + GEOM::GEOM_IShapesOperations_var aShapesOp = getGeomEngine()->GetIShapesOperations( getStudyId() ); + aSelectedObj = aShapesOp->GetSubShape( aSelectedObj, anIndex ); + } + else { + aSelectedObj = aFindedObject; // get Object from study + } } - + else { // Global Selection + if ( aShape.ShapeType() != aNeedType ) { + aSelectedObj = GEOM::GEOM_Object::_nil(); + aName = ""; + } + } + if ( myEditCurrentArgument == Group2->LineEdit1 ) { - if ( !aShape.IsNull() && aShape.ShapeType() == TopAbs_VERTEX ) { - myPoint = aSelectedObj; - myEditCurrentArgument->setText( aName ); - if (Group2->LineEdit2->text() == "") + myPoint = aSelectedObj; + myEditCurrentArgument->setText( aName ); + if (!myPoint->_is_nil() && Group2->LineEdit2->text() == "") Group2->PushButton2->click(); - } } else if (myEditCurrentArgument == Group2->LineEdit2) { - if ( !aShape.IsNull() && aShape.ShapeType() == TopAbs_EDGE ) { - myVectorX = aSelectedObj; - myEditCurrentArgument->setText( aName ); - if (Group2->LineEdit3->text() == "") - Group2->PushButton3->click(); - } + myVectorX = aSelectedObj; + myEditCurrentArgument->setText( aName ); + if (!myVectorX->_is_nil() && Group2->LineEdit3->text() == "") + Group2->PushButton3->click(); } else if ( myEditCurrentArgument == Group2->LineEdit3 ) { - if ( !aShape.IsNull() && aShape.ShapeType() == TopAbs_EDGE ) { - myVectorY = aSelectedObj; - myEditCurrentArgument->setText( aName ); - if (Group2->LineEdit1->text() == "") + myVectorY = aSelectedObj; + myEditCurrentArgument->setText( aName ); + if (!myVectorX->_is_nil() && Group2->LineEdit1->text() == "") Group2->PushButton1->click(); - } } } }